httpget from example closeablehttpresponse body java apache-httpclient-4.x

from - httpget java example



Apache HttpClient GET con cuerpo (3)

Estoy tratando de enviar un HTTP GET con un objeto json en su cuerpo. ¿Hay una manera de establecer el cuerpo de un HttpClient HttpGet? Estoy buscando el equivalente de HttpPost # setEntity.


Por lo que sé, no puedes hacer esto con la clase HttpGet predeterminada que viene con la biblioteca de Apache. Sin embargo, puede subclasificar la entidad HttpEntityEnclosingRequestBase y configurar el método en GET. No he probado esto, pero creo que el siguiente ejemplo podría ser lo que estás buscando:

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

Editar:

A continuación, podría hacer lo siguiente:

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


Usando la respuesta de torbinsky, creé la clase anterior. Esto me permite usar los mismos métodos para 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; } }


¿Cómo podemos enviar la solicitud de uri en este ejemplo al igual que 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); }