2013-05-02 28 views
5

Tôi đã làm việc mã cho đến ngày hôm qua và hôm nay tôi thấy ngoại lệ com.google.gdata.util.ResourceNotFoundException trong khi đọc google doc từ mã gae của tôi như sau. Xin lưu ý rằng dòng cuối cùng là ném ngoại lệ này.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); 

Chi tiết Stack Trace:

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

nhật ký chi tiết in dưới dạng – Vik

Trả lời

0

Có vẻ như các sự cố là do API Google không dùng nữa. Tôi đang chuyển sang google drive api.

+0

IS ResourceNotFoundException ngoại lệ cố định sau khi sử dụng "google drive api"? Nếu có thì vui lòng gửi cho tôi liên kết "google drive api". – Parveen

+0

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

+0

Tôi nhận danh sách các thư mục (trong tài liệu google) từ api. Có cách nào để phân biệt với danh sách thư mục, thư mục nào là thư mục (thư mục gốc) và thư mục con nào (thư mục trong thư mục gốc) không? Tôi đã tìm thấy chỉ có một điều từ api mà trả về tên của thư mục không có gì nhiều hơn (là thư mục này là thư mục con hay không). – Parveen

0

Dường như với tôi rằng tài nguyên mà bạn đang cố gắng để tải về theo địa chỉ URL bạn đang xây dựng không còn ở đó. Có thể là:

  1. Bạn đã xóa tệp.
  2. Định dạng URL được sử dụng để tìm tệp đã thay đổi.
+0

cũng bắt đầu cho tất cả tài liệu chúng tôi có. Vì vậy, không phải tất cả các tài liệu đều bị xóa. làm thế nào để tìm kiếm khả năng thứ 2? – Vik

+0

Vâng, lỗi HTML xuất hiện của nó chắc chắn là rằng tệp bạn đã cố truy xuất không có ở đó hoặc URL sai. Hãy thử điều này. Biến 'docType' mà bạn có, mã hóa nó thành 'tài liệu' luôn, thay vì dựa trên loại mục nhập. – chamakits

+0

Hay đúng hơn, hãy nhìn vào nhật ký của bạn. Các loại có phù hợp với những gì bạn đang mong đợi không? Ngoài ra, vì mục đích gỡ lỗi, tôi khuyên bạn nên lấy URL đó, đặt nó thành một biến, in nó vào nhật ký của bạn và xem nó có trông như thế nào mà bạn trông đợi nó không. Cũng đăng nhập exportUrl.toString() và đảm bảo nó trông như mong đợi. – chamakits