zoukankan      html  css  js  c++  java
  • httpclient中post提交json和map参数

    首先要导入对应的jar包:jar包地址:https://pan.baidu.com/s/1LNn5nSW8McYGy1EhsYD9VQ

    import java.util.ArrayList;

    import java.util.Date;

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpStatus;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import com.alibaba.fastjson.JSONObject;

    public class httpclient {

    /*入参说明
    *
    * param url 请求地址
    * param jsonObject 请求的json数据
    * param encoding 编码格式
    *
    * */
    public static String jsonPost(String url,JSONObject jsonObject,String encoding){
      CloseableHttpClient httpclient = HttpClientBuilder.create().build();
      HttpPost post = new HttpPost(url);
      String response = null;
      try {
      StringEntity s = new StringEntity(jsonObject.toString());
      s.setContentEncoding(encoding);
      s.setContentType("application/json");//发送json数据需要设置contentType
      post.setEntity(s);
      HttpResponse res = httpclient.execute(post);
      if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
        String result = EntityUtils.toString(res.getEntity());// 返回json格式:
        response = JSONObject.toJSONString(result);
      }
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
      return response;
    }


    /*入参说明
    *
    * param url 请求地址
    * param map 请求的map数据
    * param encoding 编码格式
    *
    * */
    public static String mapPost(String url, Map<String,Object> map, String encoding){
      CloseableHttpClient httpClient = null;
      HttpPost httpPost = null;
      String result = null;
      try{
      httpClient = HttpClients.createDefault();
      httpPost = new HttpPost(url);
      //设置参数
      List<NameValuePair> list = new ArrayList<NameValuePair>();
      Iterator iterator = map.entrySet().iterator();
      while(iterator.hasNext()){
        Map.Entry<String,String> elem = (Map.Entry<String, String>) iterator.next();
        list.add(new BasicNameValuePair(elem.getKey(),String.valueOf(elem.getValue())));
      }
      if(list.size() > 0){
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,encoding);
        httpPost.setEntity(entity);
      }
      HttpResponse response = httpClient.execute(httpPost);
      if(response != null){
        HttpEntity resEntity = response.getEntity();
      if(resEntity != null){
      result = EntityUtils.toString(resEntity,encoding);
      }
      }
      }catch(Exception ex){
        ex.printStackTrace();
      }
      return result;
    }


    public static void main(String[] args) {
      String result = "";

      //一个json数据的post请求
      //版本号
      Integer apiVersion = Constants.APIVERSION;
      //时间戳
      Long txnDate = new Date().getTime();

      //封装json数据
      JSONObject obj = new JSONObject();
      obj.put("apiVersion", apiVersion);
      obj.put("txnDate", txnDate);

      //提交请求
      result = jsonPost("请求地址", obj,"utf-8");
      System.out.println(result);

      //当时在测试的时候,返回的参数会出现中文乱码。这个是因为返回的参数使用了Unicode编码。所以用json转一下就可以了。

      JSONObject jsonObject=JSONObject.parseObject(result);
      result = jsonObject.toJSONString();


      System.out.println("---------------------------------------------");


      //一个map数据的post请求
      //版本号
      Integer apiVersion2 = Constants.APIVERSION;
      //时间戳
      Long txnDate2 = new Date().getTime();

      //封装map数据
      Map<String, Object> obj2 = new HashMap<String, Object>();
      obj2.put("apiVersion2", apiVersion2);
      obj2.put("txnDate2", txnDate2);

      //提交请求
      result = mapPost("请求地址", obj2,"utf-8");
      System.out.println(result);

     }
    }

  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    22. Generate Parentheses (backTracking)
    21. Merge Two Sorted Lists
    20. Valid Parentheses (Stack)
    19. Remove Nth Node From End of List
    18. 4Sum (通用算法 nSum)
    17. Letter Combinations of a Phone Number (backtracking)
    LeetCode SQL: Combine Two Tables
    LeetCode SQL:Employees Earning More Than Their Managers
  • 原文地址:https://www.cnblogs.com/12kk/p/8663408.html
Copyright © 2011-2022 走看看