我正在尝试使用App引擎中的网址提取和目录服务来获取员工的全名
String url = "myurl"+email;
try {
final URLFetchService urlFetchService = URLFetchServiceFactory.getURLFetchService();
final HTTPRequest httpRequest = new HTTPRequest(new URL(url));
final HTTPResponse httpResponse = urlFetchService.fetch(httpRequest);
ByteArrayInputStream input = new ByteArrayInputStream(httpResponse.getContent());
String driveJson = IOUtils.toString(input);
JSONObject driveJsonObject = (JSONObject) JSONValue.parseWithException(driveJson);
if((JSONArray) driveJsonObject.get("items")==null){
}else{
JSONArray driveJsonArray = (JSONArray) driveJsonObject.get("items");
for(int i=0;i<driveJsonArray.size();i++){
JSONObject firstGenre = (JSONObject) driveJsonArray.get(i);
fName=firstGenre.get("firstName").toString();
lName=firstGenre.get("lastName").toString();
Fullname=fName+" "+lName;
}
}
错误详细信息:在获取网址时收到全名超时的错误:https://mydirectory.appspot.com/directory/v1/query/abc@sial.com
我只有几次这个例外。任何人都可以建议一个可能的解决方案。
我在Google App Engine常见问题解答中阅读以下内容
您可以为请求设置截止日期,即服务等待响应的最长时间。默认情况下,获取的截止时间为5秒。 HTTP请求的最长期限为60秒,任务队列和cron作业请求的最长期限为10分钟。使用URLConnection接口时,该服务使用连接超时(setConnectTimeout())加上读取超时(setReadTimeout())
作为截止日期。
答案 0 :(得分:2)
根据常见问题解答建议您应使用URLConnection
代替URLFetchService
。然后,您可以设置setConnectTimeout(..)
和setReadTimeout(..)
。
答案 1 :(得分:0)
或者你可以在fetchoptions中设置截止日期,soemthign如:
private FetchOptions fetchOptions = FetchOptions.Builder.withDefaults();
public void doSomething() {
fetchOptions.setDeadline(10d);
HTTPRequest httpRequest = new HTTPRequest(url, HTTPMethod.GET, fetchOptions);
}