Apache HttpClient GET с телом - программирование
Подтвердить что ты не робот

Apache HttpClient GET с телом

Я пытаюсь отправить HTTP GET с объектом json в его теле. Есть ли способ установить тело HttpClient HttpGet? Я ищу эквивалент HttpPost # setEntity.

4b9b3361

Ответ 1

Из того, что я знаю, вы не можете сделать это со стандартным классом HttpGet, который поставляется с библиотекой Apache. Однако вы можете подклассифицировать объект 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;
    }
}

Edit:

Затем вы можете сделать следующее:

...
HttpGetWithEntity e = new HttpGetWithEntity();
...
e.setEntity(yourEntity);
...
response = httpclient.execute(e);

Ответ 2

Используя торбинский ответ, я создал класс выше. Это позволяет мне использовать те же методы для 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;
    }
}

Ответ 3

Как мы можем отправить запрос uri в этом примере, как HttpGet и HttpPost???

 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); 
}