web-dev-qa-db-ja.com

HttpClient.getParams()は非推奨です。代わりに何を使うべきですか?

Apache-httpclient-4.3を使用しています。 HTTPリクエスト、特にクエリ文字列パラメーターを分析しますが、

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

これが何を意味するのか理解できない。構成APIのコンストラクターパラメーターを使用する必要があります(これは何ですか?HostConfigurationはクラスとして使用できなくなりました)。しかし、構築段階では、URLを介してクエリパラメータを直接渡します。

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

非推奨のメソッドを使用せずにrequestオブジェクトからパラメータ(var1、var2)を読み戻す方法が見つかりません。オブジェクト。

32
donnadulcinea

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

クライアントまたはHttpMethodのgetParams()メソッドについて少し混乱していると思います。getParams()はURLパラメータなどを返さず、接続タイムアウト、プロキシなどのクライアントパラメータを返します、Cookie ...など

4.3.2より前では、getParams()メソッド(非推奨)を使用してクライアントにパラメーターを設定できました。4.3.2より後では、RequestConfigを使用してBuilderクラスを介して要求パラメーターを設定できます

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

そして、HttpMethodのみに設定します(以前のようなクライアントには設定しません)

_request.setConfig(requestConfigBuilder.build());
_

更新:

HttpGetまたはHttPost要求オブジェクトからURIパラメーターを取得する場合は、URIBuilderを同じ方法で使用できます

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

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