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