0

Java で URL に基づいて http 要求を作成し、そのヘッダーの一部を変更するか、新しいヘッダーを追加したいと考えています。次に、そのリクエストに対応する http レスポンスを受信し、そのヘッダー値とコンテンツを取得します。これをできるだけ簡単にするにはどうすればよいですか?

4

2 に答える 2

3

実際、apache httpclient 4.x を使用し、ResponseHandler を使用してください。

HttpClient には、マルチスレッドの使用、接続プーリング、さまざまな認証メカニズムのサポートなど、生の Java API では提供されない多くの優れた機能があります。

以下は、get を実行して本体を文字列として返す簡単な例です。

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

...

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://www.google.com");
httpGet.addHeader("MyHeader", "MyValue");

try {
    String body = httpClient.execute(httpGet, new ResponseHandler<String>() {

        @Override
        public String handleResponse(HttpResponse response) throws IOException {
            Header firstHeader = response.getFirstHeader("MyHeader");
            String headerValue = firstHeader.getValue();
            return EntityUtils.toString(response.getEntity());
        }
    });
} catch (IOException e) {
    e.printStackTrace();
}
于 2012-09-23T10:51:07.663 に答える
2

Apache HTTP クライアントを使用するか、標準を使用して実装できます。HttpUrlConnection

    URL url = new URL("http://thehost/thepath/");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod(method); // GET, POST, ...
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.addRequestProperty(key, value); // this way you can set HTTP header
于 2012-09-23T10:35:11.253 に答える