UrlEncodedFormEntity在Apache HttpClient 4中做什么?

时间:2019-06-05 18:29:37

标签: java http-post apache-httpclient-4.x urlencode

如果您要使用参数进行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);

除了将内容类型设置为“ x-www-form-urlencoded”之外,此UrlEncodedFormEntity对象还用于什么目的?

docs说它创建了一个“由一系列url编码对组成的实体”,但是不能仅通过设置内容类型来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

HttpEntity接口是控制如何处理请求/响应主体的顶级接口。在这种情况下,您使用的UrlEncodedFormEntity知道如何对参数进行编码并以所需的格式输出它们。