Estoy tratando de enviar un HTTP GET con un objeto json en su cuerpo. ¿Hay alguna manera de configurar el cuerpo de un HttpClient HttpGet? Estoy buscando el equivalente de HttpPost # setEntity.Apache HttpClient GET con cuerpo
Respuesta
Por lo que sé, no puede hacer esto con la clase predeterminada HttpGet que viene con la biblioteca Apache. Sin embargo, puede crear una subclase de la entidad HttpEntityEnclosingRequestBase y establecer 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, puede hacer lo siguiente:
...
HttpGetWithEntity e = new HttpGetWithEntity();
...
e.setEntity(yourEntity);
...
response = httpclient.execute(e);
Uso 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;
}
}
Probé el código anterior con un servicio web con el que tengo que hablar en mi proyecto y sin ir. Acabo de recibir en el registro del daemon de servicio "Error interno de la aplicación, conexión de cierre". Jersey ofreció un HttpGet con entidades (llamadas de manera diferente), pero lamentablemente apache no lo hace. Este servicio web particular realmente espera una solicitud GET y no una POST. –
¿Cómo podemos enviar solicitud URI en este ejemplo como 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);
}
- 1. Proyecto Android usando httpclient -> http.client (apache), método post/get
- 2. Apache HttpClient autenticación implícita
- 3. Apache HTTPClient SSLPeerUnverifiedException
- 4. Apache HttpComponents HttpClient timeout
- 5. ¿Apache Commons HttpClient es compatible con GZIP?
- 6. Apache HttpClient 4.1 en Android
- 7. Apache HttpClient Error interino: NoHttpResponseException
- 8. Apache HttpClient lanza una NoClassDefFoundError
- 9. Apache HttpClient en Java, instream.toString = org.apache.http.conn.EofSensorInputStream
- 10. Apache HttpClient HttpRequestRetryHandler nunca invocó
- 11. java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
- 12. Apache HttpClient y archivos de certificado PEM
- 13. Apache HttpClient haciendo multiparte formulario post
- 14. ¿Cómo obtener respuesta como documento XML con Apache Httpclient api?
- 15. Uso de httpclient de Apache para https
- 16. establecer nonProxyHosts en Apache HttpClient 4.1.3
- 17. Última Apache HttpClient en Android SDK
- 18. Apache HttpClient 4.1.1 Autenticación NTLM no SPNEGO
- 19. Apache HttpClient en Android produciendo CertPathValidatorException (IssuerName! = SubjectName)
- 20. java: apache HttpClient> cómo deshabilitar el reintento
- 21. Apache HttpClient 4.0 no pudo esperar el socket en Android
- 22. Apache HttpClient obtener agregar un encabezado de rango de bytes?
- 23. Agregar parámetro a HttpPost en httpclient de Apache
- 24. Cómo habilitar el registro de apache commons HttpClient en Android
- 25. HttpClient NoClassDefFoundError
- 26. Apache HttpClient 4.0.3 - ¿Cómo configuro la cookie con el ID de sesión para la solicitud POST
- 27. Con Apache HttpClient, ¿por qué no funciona el tiempo de espera de conexión?
- 28. Recuperar datos Json con HttpClient
- 29. Android - HttpClient JSON POST con autenticación básica
- 30. HTTPclient común y proxy
casi duplicado: http://stackoverflow.com/questions/978061/http-get-with-request-body –
Nikita - Mi pregunta es similar a la que publique, sin embargo estoy pidiendo específicamente cómo hacerlo a través de la API Apache HttpClient. Gracias de cualquier forma. –
La respuesta es oficialmente que no es posible. Las solicitudes GET no pueden contener el cuerpo de acuerdo con las especificaciones. Necesita usar solicitudes POST. –