实现以form-data参数发送post请求

在对接一个第三方接口的时候,发现 请求参数Body要以multipart/form-data 方式提交。然后就去收集了一下资料,特此记录一下

/**
* 以post方式调用第三方接口,以form-data 形式  发送数据
*
* @param url        post请求url
* @param paramMap   表单里其他参数
* @return
*/
public static String doPost(String url, Map<String, String> paramMap) {
  // 创建Http实例
  CloseableHttpClient httpClient = HttpClients.createDefault();
  // 创建HttpPost实例
  HttpPost httpPost = new HttpPost(url);       
  try {
      MultipartEntityBuilder builder = MultipartEntityBuilder.create();
      builder.setCharset(java.nio.charset.Charset.forName("UTF-8"));
      builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
      
      //表单中参数
     for(Map.Entry<String, String> entry: paramMap.entrySet()) {
          builder.addPart(entry.getKey(),new StringBody(entry.getValue(), ContentType.create("text/plain", Consts.UTF_8)));
      }
     
      HttpEntity entity = builder.build();
      httpPost.setEntity(entity);
      HttpResponse response = httpClient.execute(httpPost);// 执行提交
                
      if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
          // 返回
          String res = EntityUtils.toString(response.getEntity(), java.nio.charset.Charset.forName("UTF-8"));
          return res;
      }
     
  } catch (Exception e) {
      e.printStackTrace();
      logger.error("调用HttpPost失败!" + e.toString());
  } finally {
      if (httpClient != null) {
          try {
              httpClient.close();
          } catch (IOException e) {
              logger.error("关闭HttpPost连接失败!");
          }
      }
  }       
  return null;              
}


然后放一下我使用的依赖

<!-- httpclient 相关依赖-->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.6</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpmime</artifactId>
    <version>4.5</version>
</dependency>

然后如果使用PostMan以这种方式测试的话,是这样的。
在这里插入图片描述

参考:https://blog.csdn.net/LYY1448019681/article/details/115124407

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eric-x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值