web-dev-qa-db-fra.com

HttpClient.getParams () déconseillé. Que dois-je utiliser à la place?

J'utilise Apache-httpclient-4.3. J'analyserais une requête http, en particulier les paramètres de la chaîne de requête, mais

@Deprecated
public HttpParams getParams()
Deprecated. (4.3) use constructor parameters of configuration API provided by HttpClient

Je ne suis pas sûr de comprendre ce que cela signifie. Je devrais utiliser les paramètres du constructeur de certaines API de configuration (qu'est-ce que c'est? HostConfiguration n'est plus disponible en tant que classe). Mais pendant la phase de construction, je passe directement les paramètres de requête via l'URL:

HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2");

Je ne peux pas trouver un moyen de relire les paramètres (var1, var2) de mon objet request sans utiliser des méthodes obsolètes, ce qui devrait être simple pour obtenir les attributs d'un objet.

32
donnadulcinea

Vous pouvez utiliser un objet RIBuilder

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

Je pense que vous êtes un peu confus au sujet de la méthode getParams() du client ou HttpMethod, getParams() ne renvoie pas les paramètres URL ou quelque chose comme ça, retourne les paramètres client comme le délai de connexion, le proxy , cookies ... etc

Avant 4.3.2, vous pouviez définir les paramètres pour le client à l'aide de la méthode getParams() (obsolète maintenant), après 4.3.2, vous pouvez définir les paramètres de demande via la classe RequestConfig à l'aide d'un Builder

Builder requestConfigBuilder = RequestConfig.custom();
requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);

puis définissez le HttpMethod uniquement (pas au client comme avant)

request.setConfig(requestConfigBuilder.build());

Mise à jour:

Si vous souhaitez obtenir les paramètres URI d'un objet de demande HttpGet ou HttPost, vous pouvez utiliser le URIBuilder de la même manière

HttpGet request = new HttpGet("http://example.com/?var=1&var=2");

URIBuilder newBuilder = new URIBuilder(request.getURI());
List<NameValuePair> params = newBuilder.getQueryParams(); 
33
vzamanillo