HttpClient 发送 POST 请求并携带多个参数

80 篇文章 0 订阅

https://blog.csdn.net/YouCanYouUp_/article/details/80769572

public class HttpClientUtil {
	
	public static String sendPost(String urlParam,PageData paramPd) throws HttpException, IOException {
        // 创建httpClient实例对象
        HttpClient httpClient = new HttpClient();
        // 设置httpClient连接主机服务器超时时间:15000毫秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(15000);
        // 创建post请求方法实例对象
        PostMethod postMethod = new httpUTF8PostMethod(urlParam);
        // 设置post请求超时时间
        postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 60000);
        postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        //paramPd 存在多个参数键值对,遍历时,存入这个数组
        NameValuePair[] nvpair = new NameValuePair[paramPd.size()];
        //遍历参数列表内的值,获取键值对
        Iterator<Entry<String,String>> iter = paramPd.entrySet().iterator();
        int i = 0;
        while(iter.hasNext()){
	         Entry<String,String> entry = iter.next();
	         String key = entry.getKey();
	         String value = entry.getValue();
	         	         
	         nvpair[i] = new NameValuePair(key, value);
	         i++;
        }
        //设置请求携带的参数--一个或多个
        postMethod.setRequestBody(nvpair);

        httpClient.executeMethod(postMethod);

        String result = postMethod.getResponseBodyAsString();
        postMethod.releaseConnection();
        return result;
    }
}

其中,

  • urlParam:接口地址
  • PageData paramPd:参数键值对 MAP

    PageData :是一个 HashMap ,往里面存数据时,如下:
     
    PageData pd = new PageData();
    
    pd.put("aaa", "aaa");    	    
    pd.put("bbb", "bbb");

     

  • httpUTF8PostMethod
  • //创建PostMethod的子类设置编码格式
    public class httpUTF8PostMethod extends PostMethod{     
        
    	public httpUTF8PostMethod(String url){     
           super(url);     
        }   
    	
        @Override     
        public String getRequestCharSet() {     
            //return super.getRequestCharSet();     
            return "UTF-8";     
        }  
    }

 

POST  方法调用: 

postInfo = HttpClientUtil.sendPost(remUrl,pd);

 

在 ruoyi HttpUtils 工具类中,可以使用 org.apache.http.client.methods.HttpPost 类来发送 POST 请求,并且使用 org.apache.http.NameValuePair 接口来封装请求参数。可以通过以下步骤来携带多个请求参数发送请求: 1. 创建一个 List<NameValuePair> 对象,用于存储请求参数。 2. 使用 org.apache.http.message.BasicNameValuePair 类创建多个 NameValuePair 对象,并添加到 List<NameValuePair> 中。 3. 创建一个 HttpPost 对象,并设置请求的 URL。 4. 使用 org.apache.http.client.entity.UrlEncodedFormEntity 类将 List<NameValuePair> 对象转换成请求体,并将其设置到 HttpPost 对象中。 5. 执行 HttpPost 请求,并获取响应结果。 示例代码如下: ``` 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.HttpClientBuilder; import org.apache.http.message.BasicNameValuePair; import java.util.ArrayList; import java.util.List; public class Example { public static void main(String[] args) throws Exception { // 创建 HttpClient 对象 HttpClient httpClient = HttpClientBuilder.create().build(); // 创建请求参数 List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("username", "admin")); params.add(new BasicNameValuePair("password", "123456")); // 创建 HttpPost 对象,并设置请求 URL HttpPost httpPost = new HttpPost("http://example.com/login"); // 将请求参数设置到请求体中 httpPost.setEntity(new UrlEncodedFormEntity(params)); // 执行 HttpPost 请求,并获取响应结果 HttpResponse response = httpClient.execute(httpPost); // 处理响应结果 // ... } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值