サービス (Web サービスではない) に対して行う HTTP 要求のタイムアウトを設定する必要があります。Apache HTTP クライアントを使用しています。これらの 2 行のコードを追加して、サービスへのリクエストとレスポンスのタイムアウトを設定しました。
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
1)現在、サービスからの応答がほぼ瞬時に表示されるため、タイムアウトとして10秒を設定しています。タイミングを増減する必要がありますか?
2) 応答が 10 秒以上かかるとどうなりますか? それは例外をスローし、どの例外になりますか? 以下のコードでタイムアウトを設定するために追加する必要があるものは他にありますか。
public HashMap<String, Object> getJSONData(String url) throw Exception{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 10000);
HttpConnectionParams.setSoTimeout(params, 10000);
HttpHost proxy = new HttpHost(getProxy(), getProxyPort());
ConnRouteParams.setDefaultProxy(params, proxy);
URI uri;
InputStream data = null;
try {
uri = new URI(url);
HttpGet method = new HttpGet(uri);
HttpResponse response = httpClient.execute(method);
data = response.getEntity().getContent();
}
catch (Exception e) {
e.printStackTrace();
}
Reader r = new InputStreamReader(data);
HashMap<String, Object> jsonObj = (HashMap<String, Object>) GenericJSONUtil.fromJson(r);
return jsonObj;
}