java - HttpClient.getParams() en desuso. ¿Qué debo usar en su lugar?
apache-httpclient-4.x (1)
Estoy usando apache-httpclient-4.3. Me gustaría analizar una solicitud http, en particular los parámetros de cadena de consulta, pero
@Deprecated
public HttpParams getParams()
Deprecated. (4.3) use constructor parameters of configuration API provided by HttpClient
No estoy seguro de entender lo que esto significa. Debería usar los parámetros de construcción de algunas API de configuración (¿qué es eso? HostConfiguration ya no está disponible como clase). Pero durante la fase de construcción, paso directamente los parámetros de consulta a través de la url:
HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2");
No puedo encontrar una manera de volver a leer los parámetros ( var1, var2 ) de mi objeto de solicitud sin usar métodos en desuso, lo que debería ser simple para obtener atributos de un objeto.
Puedes usar un objeto URIBuilder
URIBuilder builder = new URIBuilder("http://example.com/");
builder.setParameter("var1", "value1").setParameter("var2", "value2");
HttpGet request = new HttpGet(builder.build());
// get back the url parameters
List<NameValuePair> params = builder.getQueryParams();
Creo que estás un poco confundido acerca del método getParams()
del cliente o HttpMethod, getParams()
no devuelve los parámetros de la URL o algo así, devuelve los parámetros del cliente como el tiempo de espera de la conexión, proxy, cookies, etc.
Antes de 4.3.2, podría establecer los parámetros para el cliente usando el método getParams()
(obsoleto ahora), después de 4.3.2 puede configurar los parámetros de solicitud a través de la clase RequestConfig
usando un Builder
Builder requestConfigBuilder = RequestConfig.custom();
requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);
y luego HttpMethod
solo para HttpMethod
(no para el cliente como antes)
request.setConfig(requestConfigBuilder.build());
Actualizar:
Si desea obtener los parámetros URI de un objeto de solicitud HttpGet
o HttPost
, puede utilizar el URIBuilder
de la misma manera
HttpGet request = new HttpGet("http://example.com/?var=1&var=2");
URIBuilder newBuilder = new URIBuilder(request.getURI());
List<NameValuePair> params = newBuilder.getQueryParams();