I am trying to send an HTTP GET with a json object in its body. Is there a way to set the body of an HttpClient HttpGet? I am looking for the equivalent of HttpPost#setEntity.
質問する
23594 次
4 に答える
40
私の知る限り、Apache ライブラリに付属するデフォルトの HttpGet クラスではこれを行うことはできません。ただし、HttpEntityEnclosingRequestBaseエンティティをサブクラス化し、メソッドを GET に設定することはできます。私はこれをテストしていませんが、次の例があなたが探しているものかもしれないと思います:
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
public final static String METHOD_NAME = "GET";
@Override
public String getMethod() {
return METHOD_NAME;
}
}
編集:
その後、次のことができます。
...
HttpGetWithEntity e = new HttpGetWithEntity();
...
e.setEntity(yourEntity);
...
response = httpclient.execute(e);
于 2012-09-21T18:03:42.497 に答える
7
torbinsky's answer を使用して、上記のクラスを作成しました。これにより、HttpPost に対して同じメソッドを使用できます。
import java.net.URI;
import org.apache.http.client.methods.HttpPost;
public class HttpGetWithEntity extends HttpPost {
public final static String METHOD_NAME = "GET";
public HttpGetWithEntity(URI url) {
super(url);
}
public HttpGetWithEntity(String url) {
super(url);
}
@Override
public String getMethod() {
return METHOD_NAME;
}
}
于 2014-07-29T15:44:10.460 に答える