Что делает UrlEncodedFormEntity в Apache HttpClient 4? - PullRequest
0 голосов
/ 05 июня 2019

Если вы хотите создать HTTP-пост с параметрами и отправить его с типом содержимого "x-www-form-urlencoded", то в Apache HTTP Client 3 это можно сделать ...

    HttpMethod method = new PostMethod(myUrl)

    method.setParams(mp)
    method.addParameter("user_name", username)
    method.addParameter("password", password)

    method.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')

    int responseCode = httpClient.executeMethod(method)

Но Apache HTTP Client 4 представил объект UrlEncodedFormEntity, так что появился новый способ сделать то же самое ...

HttpPost post = new HttpPost(url);

List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("user_name", username));
urlParameters.add(new BasicNameValuePair("password", password));;

post.setEntity(new UrlEncodedFormEntity(urlParameters));

HttpResponse response = client.execute(post);

Какой цели служит этот объект UrlEncodedFormEntity, кроме установки типа содержимого "x-www-form-urlencoded"?

В документах говорится, что он создает «сущность, составленную из списка пар, закодированных по URL», но разве это невозможно сделать, просто установив тип содержимого?

1 Ответ

1 голос
/ 05 июня 2019

Интерфейс HttpEntity является интерфейсом верхнего уровня, управляющим тем, как обрабатывается тело запроса / ответа. В этом случае вы используете UrlEncodedFormEntity, который знает, как кодировать параметры и выводить их в требуемом формате.

...