2013-05-02 4 views
5

Miałem działający kod do wczoraj i dziś widzę wyjątek com.google.gdata.util.ResourceNotFoundException podczas czytania google doc z mojego kodu gae w następujący sposób. Zwróć uwagę, że ostatnia linia rzuca ten wyjątek.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); 

Szczegółowe stosu Ślad:

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

szczegółowe logi drukowane jako – Vik

Odpowiedz

0

Wygląda na to, że problemy są spowodowane wycofanymi API google. Przechodzę do Google Drive api.

+0

Naprawiono wyjątek ResourceNotFoundException po użyciu "google drive api"? Jeśli tak, wyślij mi link "google drive api". – Parveen

+0

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

+0

Mam listę folderów (w google docs) z api. Czy istnieje sposób na odróżnienie od listy folderów, który folder jest folderem (folder główny), a który jest podfolderem (folder w folderze głównym)? Znalazłem tylko jedną rzecz z api, która zwraca nazwę folderu nic więcej (czy ten folder jest podfolderem, czy nie). – Parveen

0

Wydaje mi się, że zasób próbujesz pobrać zgodnie z adresem URL, który budujesz już nie ma. Może to być:

  1. Usunąłeś plik.
  2. Format adresu URL używany do znalezienia pliku został zmieniony.
+0

dobrze zaczęły nadchodzić dla wszystkich dokumentów, które mamy. Nie jest więc możliwe usunięcie wszystkich dokumentów. jak znaleźć drugą możliwość? – Vik

+0

Cóż, błąd HTML na wyjściu z pewnością mówi, że plik, który próbujesz pobrać, nie istnieje lub że adres URL jest nieprawidłowy. Spróbuj tego. Ta zmienna "docType", którą posiadasz, musi być zawsze "dokumentowana", zamiast oparta na typie pozycji. – chamakits

+0

A raczej spójrz na swój dziennik. Czy typy odpowiadają oczekiwaniom? Ponadto, w celu debugowania, polecam wziąć ten URL, ustawić go na zmienną, wydrukować go do dziennika i sprawdzić, czy wygląda, jak się spodziewasz. Zaloguj się również do exportUrl.toString() i upewnij się, że wygląda zgodnie z oczekiwaniami. – chamakits