HttpClient的post请求设置请求体

Updated on in 程序人生 with 0 views and 0 comments

1.maven引入依赖

<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.0.2</version>
        </dependency>

2.请求示例

package utils;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * http工具类
 */
public class HttpUtils {
    public static String doPost(String url, Map<String,Object> paramsMap) {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost postRequest = new HttpPost();
        List<NameValuePair> params = new ArrayList<>();
        Set<String> paramsNames = paramsMap.keySet();
        for (String paramsName : paramsNames) {
            NameValuePair param = new BasicNameValuePair(paramsName, String.valueOf(paramsMap.get(paramsName)));
            params.add(param);
        }
        try {
            HttpEntity httpEntity = new UrlEncodedFormEntity(params, "UTF-8");
            postRequest.setURI(new URI(url));
            postRequest.setEntity(httpEntity);
            HttpResponse response = httpClient.execute(postRequest);
            if (response.getStatusLine().getStatusCode() == 200) {
                HttpEntity resEntity = response.getEntity();
                return EntityUtils.toString(resEntity, "utf-8");
            } else {
                HttpEntity resEntity = response.getEntity();
                String message = EntityUtils.toString(resEntity, "utf-8");
                System.out.println(message);
            }
        } catch (URISyntaxException | IOException e) {
            System.out.println("请求异常");
            e.printStackTrace();
        }
        return null;
    }
}

UrlEncodedFormEntity用来设置请求的参数,参数类型为 List<NameValuePair>

BasicNameValuePair类的内部实现非常简单,并不是使用的map存储,而是直接在类中声明了两个属性,一个name,一个value


标题:HttpClient的post请求设置请求体
作者:wenyl
地址:http://www.wenyoulong.com/articles/2020/06/24/1592981816253.html