1

私は現在、新しいHttpClientライブラリを理解して、html / css/etcを返すための基本的なクラスを考え出しているところです。要求されたURLの。ここから抜粋した例を使用

以下の例を見ることができます:

package test;

import org.apache.http.client.ResponseHandler;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

public class Test {

    public final static void main(String[] args) throws Exception {

        HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpGet httpget = new HttpGet("http://www.cwjobs.co.uk/");
            System.out.println("executing request " + httpget.getURI());

            // Create a response handler
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            String responseBody = httpclient.execute(httpget, responseHandler);

            System.out.println(responseBody);
        } finally {
            httpclient.getConnectionManager().shutdown();
        }
    }
}

私が抱えている問題は、要求したいURLをhttp://www.google.comのようなものに設定すると、必要な応答が出力されることです。ただし、www.cwjobs.co.uk(単なる例として使用)などのURLを使用すると、executeメソッドでフリーズします。

私はJavaにかなり慣れておらず、HTTPの基本を理解しているので、次のことを知りたいと思います。-基本的な例を使用しましたが、特定のURLにアクセスするために追加する必要のあるものがないために間違っていました-それサーバー側の環境設定により、その特定のURLから必要な応答を取得できません。-Apache.orgサイトの外を調べるために私に勧めることができる追加の文献やリンク

ありがとう、マーク

4

2 に答える 2

1

接続のDefaultHttpClientでタイムアウトを設定する必要があります。参照: http: //hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/params/CoreConnectionPNames.html?is-external = true#SO_TIMEOUT

于 2011-12-06T22:32:44.663 に答える
1

このコードは非推奨になりました(HttpParamsなどを入手してください)。より良い方法は次のとおりです。

RequestConfig defaultRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BEST_MATCH).setExpectContinueEnabled(true).setStaleConnectionCheckEnabled(true).setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST)).setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build();

HttpGet httpGet = new HttpGet(url);    
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig).setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();
httpGet.setConfig(requestConfig);
于 2013-11-02T11:53:16.527 に答える