Подтвердить что ты не робот

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

Я не могу найти способ прочитать параметры (var1, var2) из ​​моего объекта запроса без использования устаревших методов, которые должны быть простыми, чтобы получить атрибуты от объекта.

4b9b3361

Ответ 1

Вы можете использовать объект 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();

Я думаю, что вы немного запутались в методе getParams() от клиента или HttpMethod, 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());

Update:

Если вы хотите получить параметры URI из объекта запроса HttpGet или HttPost, вы можете использовать URIBuilder тем же способом

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

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