zoukankan      html  css  js  c++  java
  • http post发送请求

    一:
    
    用java自带URL发送
    public synchronized JSONObject getJSON(String url2, String param) {
               try {
                    URL url = new URL(url2);
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();
                    con.setDoOutput(true); //获取返回数据需要设置为true 默认false
                    con.setDoInput(true); //发送数据需要设置为true 默认false
                    con.setReadTimeout(5000);
                    con.setConnectTimeout(5000);
                    con.setRequestMethod("POST");
                    con.connect();
                    DataOutputStream out = new DataOutputStream(con.getOutputStream());
                    if (param != null) {
                         param = URLEncoder.encode(param,"utf-8");//url编码防止中文乱码
                         out.writeBytes(param);
                    }
                    out.flush();
                    out.close();
                    BufferedReader red = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
                    StringBuffer sb = new StringBuffer();
                    String line;
                    while ((line = red.readLine()) != null) {
                         sb.append(line);
                    }
                    red.close();
                    return JSONObject.fromObject(sb);
               } catch (Exception e) {
                    e.printStackTrace();
                    return null;
               }
         }
    
    二:apache httppost方式
    
     
    /**
          * post请求,发送json数据
          *
          * @param url
          * @param json
          * @return
          */
         public static JSONObject doPost(String url, String json) {
               HttpPost post = new HttpPost(url);
               JSONObject response = null;
               try {
                    StringEntity s = new StringEntity(json, "UTF-8"); // 中文乱码在此解决
                    s.setContentType("application/json");
                    post.setEntity(s);
                    HttpResponse res = HttpClients.createDefault().execute(post);
                    if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                         String result = EntityUtils.toString(res.getEntity());// 返回json格式:
                         response = JSON.parseObject(result);
                    }
               } catch (Exception e) {
                    e.printStackTrace();
               }
               return response;
         }
    
    三: httppost 发送map
     
       /**
          * post请求
          *
          * @param url
          * @param param
          * @return
          */
         public static String httpPost(String url, Map<String, Object> map) {
               try {
                    HttpPost post = new HttpPost(url);
            //requestConfig post请求配置类,设置超时时间
                    RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(50000).build();
                    post.setConfig(requestConfig);
                    List<NameValuePair> params = new ArrayList<NameValuePair>();
                    for (Map.Entry<String, Object> entry : map.entrySet()) {
                         if (entry.getValue() != null && entry.getValue() != "") {
                  //用basicNameValuePair来封装数据
                               params.add(new BasicNameValuePair(entry.getKey(), entry.getValue() + ""));
                         }
                    }
              //在这个地方设置编码 防止请求乱码
                    post.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
                    GeneralLog.info(ModelName, "请求url:" + url);
                    GeneralLog.info(ModelName, "请求数据:" + map);
                    CloseableHttpResponse httpResponse = HttpClients.createDefault().execute(post);
                    System.out.println("返回数据:" + httpResponse);
                    String result = null;
                    if (httpResponse.getStatusLine().getStatusCode() == 200) {
                         HttpEntity httpEntity = httpResponse.getEntity();
                         result = EntityUtils.toString(httpEntity);// 取出应答字符串
                    }
                    return result;
               } catch (Exception e) {
                    e.printStackTrace();
                    return null;
               }
         }
  • 相关阅读:
    【转载】python基础-文件读写'r' 与 'rb' 和‘r+'与’rb+'区别
    python-IndexError: list index out of range
    NameError:name ‘xrange’ is not defined
    k8s 结合docker搭建私有仓库
    部署Kubernetes-dashboard
    通过Kubeadm搭建Kubernetes集群
    .net core +gogs + jenkins +docker自动化发布、部署
    .NET Core 使用ModelBinder去掉所有参数的空格
    mysql主从同步
    IdentityServer4同时使用多个GrantType进行授权和IdentityModel.Client部分源码解析
  • 原文地址:https://www.cnblogs.com/bchange/p/9156178.html
Copyright © 2011-2022 走看看