1

对于某些查询,我在等待响应 10 秒后收到此 ServiceException。

我还尝试了直接 http get 请求和相同的结果。

例如:合同%20Colectiv%20de%20Munc%C4%83

1. My code: 

    URL feedUrl = new URL("https://docs.google.com/feeds/default/private/ full/folder%3A" + folderId + "/contents/-/pdf");                        
    DocumentQuery query = new DocumentQuery(feedUrl); 
    query.setFullTextQuery(searchText); 
    client.setConnectTimeout(0);// with or without this line I receive the same result (I also put 30000 value - same result) 
    client.setReadTimeout(0);// with or without this line I receive the same result 

    DocumentListFeed feed = client.getFeed(query, DocumentListFeed.class); 


2. This is the stacktrace for the exception that I receive with documentlist api query: 

    com.google.gdata.util.ServiceException: An unknown error has occurred. 
    <errors xmlns='http://schemas.google.com/g/2005'>
    <error><domain>GData</domain><code>ServiceException</code>
    <internalReason>An unknown error has occurred</internalReason>
    </error></errors> 
    at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:624)
    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.Service.getFeed(Service.java:1135) 
    ... 

3. This is the exception I receive with direct http get request: 

     java.io.IOException: Server returned HTTP response code: 500 for URL: https://docs.google.com/feeds/default/private/full/folder%3[my_folder_doc-id]/contents/-/pdf?q="[query_text]"&max-results=25 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java: 1436) 
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java: 379) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java: 318) 
    at GoogleDocsManager.googleSearch(GoogleDocsManager.java:281) 

附加信息:

1. My folder contains almost 300k files. Could this be the problem? 
2. In ~85% of searches I get the correct response () 
3. In browser the same interogation returns "The server encountered an error. Please try again later", but after refresh works fine. 

任何人都可以帮我找到解决此问题的“解决方法”吗?或者如何避免?

几个月前我在documentlist api group上发布了这个问题,但由于这个组是只读的,我无法获得有关此问题的任何信息。


这是我通过直接 http 请求得到的 500 响应(大约 10 秒后):

<errors xmlns='http://schemas.google.com/g/2005'>
    <error>
        <domain>GData</domain>
        <code>ServiceException</code>
        <internalReason>An unknown error has occurred.</internalReason>
    </error>
</errors>

这是代码:

URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full/folder%3A" +  folderId + "/contents/-/pdf?max-results=25&q=" + searchText);                        

HttpURLConnection copyHttpUrlConn = (HttpURLConnection) feedUrl.openConnection(); 
copyHttpUrlConn.setDoOutput(true); 
copyHttpUrlConn.setRequestMethod("GET");            
copyHttpUrlConn.setRequestProperty("GData-Version", "3.0");
copyHttpUrlConn.setRequestProperty("Authorization", "GoogleLogin auth=" + authToken);
int respCode = copyHttpUrlConn.getResponseCode(); 

System.out.println("Response  code: " + respCode);

InputStreamReader isr = null;
if(respCode != 200){
    isr = new InputStreamReader(copyHttpUrlConn.getErrorStream());
}
else{
    isr = new InputStreamReader(copyHttpUrlConn.getInputStream());
}
BufferedReader br = new BufferedReader(isr); 

String line = null;
while((line = br.readLine()) != null){
    System.out.println(line); 
}

其他最近有问题的查询:

  1. 标题:2012-05 "exceptii de neconstitutionalitate penal"
  2. "诉讼案"
  3. "moş crăciun srl"
  4. "bil terenuri sa bucuresti"
  5. "奥多南塔德普拉塔"
4

1 回答 1

0

作为一种解决方法,您可以考虑使用任务队列离线获取大型文档列表,并序列化您想要在数据存储中显示的信息。

如果出现错误,使用任务队列会给您自动重试,并且 urlfetch 和处理截止日期最多 10 分钟。

于 2012-04-27T12:25:05.530 回答