java apache-httpclient-4.x

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