2013-05-02 7 views
5

Ho avuto codice di lavoro fino a ieri e oggi sto vedendo l'eccezione com.google.gdata.util.ResourceNotFoundException durante la lettura di google doc dal mio codice gae come segue. Si noti che l'ultima riga sta generando questa eccezione.com.google.gdata.util.ResourceNotFoundException

DocsService client = new DocsService("sakshum-YourAppName-v1"); 
      client.setOAuthCredentials(oauthParameters, 
        new OAuthHmacSha1Signer()); 
      URL feedUrl = new URL(
        "https://docs.google.com/feeds/default/private/full/"); 
      DocumentQuery dquery = new DocumentQuery(feedUrl); 
      dquery.setTitleQuery(title); 
      dquery.setTitleExact(true); 
      dquery.setMaxResults(10); 
      DocumentListFeed resultFeed = client.getFeed(dquery, 
        DocumentListFeed.class); 
      log.info("feed size:" + resultFeed.getEntries().size()); 
      if (resultFeed.getEntries().size() != 1) { 
       log.info("More than one document is found with same title."); 
       return null; 
      } 
      emailBody = new StringBuffer(""); 
      for (DocumentListEntry entry : resultFeed.getEntries()) { 
       String docId = entry.getDocId(); 
       String docType = entry.getType(); 
       log.info("Getting doc from url with docId:" + docId 
         + " docType:" + docType); 
       URL exportUrl = new URL(
         "https://docs.google.com/feeds/download/" + docType 
           + "s/Export?docID=" + docId 
           + "&exportFormat=html"); 
       MediaContent mc = new MediaContent(); 
       mc.setUri(exportUrl.toString()); 
      log.info("Getting media"); 
      MediaSource ms = client.getMedia(mc); 

dettagliata dello stack:

vik.sakshum.sakshumweb.server.common.CommonServiceCode getGoogleDoc: com.google.gdata.util.ResourceNotFoundException: OK 
<!DOCTYPE html><html lang="en" ><head><meta name="description" content="Web word processing, spreadsheets and presentations"><link rel="shortcut icon" href="//ssl.gstatic.com/docs/common/drive_favicon1.ico"><title>Google Drive -- Page Not Found</title><link href="//fonts.googleapis.com/css?family=Open+Sans:300" rel="stylesheet" type="text/css"><style>/* Copyright 2013 Google Inc. All Rights Reserved. */ 
.goog-inline-block{position:relative;display:-moz-inline-box;display:inline-block}* html .goog-inline-block{display:inline}*:first-child+html .goog-inline-block{display:inline}#drive-logo{color:#91959c;font-family:"Open Sans",Arial,sans-serif;font-size:27px;font-weight:300;position:absolute;text-shadow:0 1px 1px white;white-space:nowrap}#drive-logo img{padding:0 0.4em 0 0;position:relative;top:2px;vertical-align:middle}#drive-logo a{color:#91959c;text-decoration:none}#drive-logo span.goog-inline-block{margin-top:2px;vertical-align:top}</style><style type="text/css">body {background-color: #fff; font-family: Arial,sans-serif; font-size: 13px; margin: 0; padding: 0;}a, a: link, a: visited {color: #112ABB;}</style><style type="text/css">.errorMessage {font-size: 12pt; font-weight: bold; line-height: 150%;}</style></head><body><div style="margin: auto; max-width: 750px;"><div style="margin: 80px 40px 20px 40px; position:relative; "><div style="position: absolute; top: -80px;"><h1 id="drive-logo"><a href="/"><img src="//www.google.com/images/logos/google_logo_41.png" width="116" height="41" alt="Google logo" ><span class="goog-inline-block">Drive</span></a></h1></div><div align="center"><p class="errorMessage" style="padding-top: 50px">Sorry, the file you have requested does not exist.</p><p>Make sure that you have the correct URL and that the owner of the file hasn&#39;t deleted it.</p><div style="background: #F0F6FF; border: 1px solid black; margin-top: 35px; padding: 10px 125px; width: 300px;"><p><strong>Get stuff done with Google Drive</strong></p><p>Apps in Google Drive make it easy to create, store and share online documents, spreadsheets, presentations and more.</p><p>Learn more at <a href="https://drive.google.com/start/apps">drive.google.com/start/apps</a>.</p></div></div></div></div></body></html> 

at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:591) 
at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563) 
at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552) 
at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530) 
at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535) 
at com.google.gdata.client.media.MediaService.getMediaResource(MediaService.java:234) 
at com.google.gdata.client.media.MediaService.getMedia(MediaService.java:276) 
at com.google.gdata.client.media.MediaService.getMedia(MediaService.java:302) 
at vik.sakshum.sakshumweb.server.common.CommonServiceCode.getGoogleDoc(CommonServiceCode.java:920) 
at vik.sakshum.sakshumweb.server.PocServiceImpl.activatePOCs(PocServiceImpl.java:1807) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_$1.run(Method_.java:179) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_.privilegedInvoke(Method_.java:176) 
at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_.invoke_(Method_.java:137) 
at com.google.apphosting.runtime.security.shared.intercept.java.lang.reflect.Method_.invoke(Method_.java:45) 
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) 
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.tools.appstats.AppstatsFilter.doFilter(AppstatsFilter.java:141) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:57) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:266) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146) 
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:439) 
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:480) 
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:487) 
at com.google.tracing.TraceContext.runInContext(TraceContext.java:774) 
at com.google.tracing.TraceContext$DoInTraceContext.runInContext(TraceContext.java:751) 
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:342) 
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:334) 
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:484) 
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251) 
at java.lang.Thread.run(Thread.java:722) 
+0

registri dettagliati stampa come – Vik

risposta

0

Sembra che i problemi siano dovuti alle API google deprecate. Mi sto spostando su google drive api.

+0

IS riparata l'eccezione ResourceNotFoundException dopo aver utilizzato "google drive api"? Se sì, inviami il link "google drive api". – Parveen

+0

https://developers.google.com/drive/ – Vik

+0

Ho ottenuto l'elenco delle cartelle (in Google Documenti) da API. C'è un modo per differenziare dall'elenco delle cartelle, quale cartella è la cartella (cartella principale) e quale è la sottocartella (cartella nella cartella principale)? Ho trovato solo una cosa da API che non restituisce il nome della cartella nient'altro (questa cartella è sottocartella o no). – Parveen

0

Mi sembra che la risorsa che si sta tentando di scaricare in base alla URL si sta costruendo non c'è più. Potrebbe essere:

  1. Hai eliminato il file.
  2. Il formato URL utilizzato per trovare il file è stato modificato.
+0

bene è iniziato a venire per tutti i documenti che abbiamo. Quindi non è possibile che tutti i documenti vengano cancellati. come trovare la seconda possibilità? – Vik

+0

Beh, l'errore HTML che sta emettendo sta dicendo che il file che hai provato a recuperare non è lì, o che l'URL è sbagliato. Prova questo. Quella variabile 'docType' che hai, hardcode per essere 'documento' sempre, invece di basato sul tipo di voce. – chamakits

+0

O meglio, guarda il tuo registro. I tipi corrispondono a ciò che ti aspetti? Inoltre, per scopi di debug, ti consiglio di prendere quell'URL, impostarlo su una variabile, stamparlo sul tuo log e vedere se sembra come ti aspetti che guardi. Registrare anche exportUrl.toString() e assicurarsi che appaia come previsto. – chamakits