3

以前の同僚から「継承」した Java コードがいくつかあります。その一部はメソッド GET を使用して外部 URL に接続し、解析のために少量の XML を取得します。最近、ベンダーの Web サイトがハングしてリソースを使い果たしているため、この接続で Web サイトがクラッシュするという問題が発生しています。1 つの問題は、コードで HttpGet オブジェクトを使用するときにタイムアウトが設定されていないことが原因です。このオブジェクトを使用してタイムアウトを微調整する方法はありますか、またはこの XML を元に戻すより良い方法はありますか?

別の API を使用したほうがよいでしょうか?

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("param1","foobar"));
URI uri = URIUtils.createURI("http", "myhost.com", -1, "mypath",
URLEncodedUtils.format(params, "UTF-8"), null);

// there is no timeout here??
HttpGet httpGet = new HttpGet(uri);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(httpGet);
String result = IOUtils.toString(httpResponse.getEntity()
    .getContent(), "UTF-8");

ありがとう!

4

1 に答える 1

7

代わりにこれを試してください

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("param1","foobar"));
URI uri = URIUtils.createURI("http", "myhost.com", -1, "mypath",
URLEncodedUtils.format(params, "UTF-8"), null);

HttpGet httpGet = new HttpGet(uri);
HttpClient httpClient = new DefaultHttpClient();
// set the connection timeout value to 30 seconds (30000 milliseconds)
final HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 30000);
httpClient = new DefaultHttpClient(httpParams);
HttpResponse httpResponse = httpClient.execute(httpGet);
String result = IOUtils.toString(httpResponse.getEntity().getContent(), "UTF-8");

タイムアウトが定義されたJavaHTTPクライアント要求から

于 2012-09-04T20:22:40.117 に答える