27

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.

4

4 に答える 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 に答える