Https发送POST请求[亲测可用]

Posted zhuziyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Https发送POST请求[亲测可用]相关的知识,希望对你有一定的参考价值。

1、直接建一个工具类放入即可

/**
 * 发送https请求共用体 
 */
public  static JSONObject  sendPost(String url,String parame,Map<String,Object> pmap) throws IOException, KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException{
    // 请求结果
    JSONObject json = new JSONObject();
    PrintWriter out = null;
    BufferedReader in = null;
    String result = "";
    URL realUrl;
    HttpsURLConnection conn;
    String method = "POST";
    //查询地址
    String queryString = url;
    //请求参数获取
    String postpar = "";
    //字符串请求参数
    if(parame!=null){
        postpar = parame;
    }
    // map格式的请求参数
    if(pmap!=null){
        StringBuffer mstr = new StringBuffer();
        for(String str:pmap.keySet()){
            String val = (String) pmap.get(str);
            try {
                val=URLEncoder.encode(val,"UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
                mstr.append(str+"="+val+"&");
        }
        // 最终参数
        postpar = mstr.toString(); 
        int lasts=postpar.lastIndexOf("&");
        postpar=postpar.substring(0, lasts);
    }
    if(method.toUpperCase().equals("GET")){
        queryString+="?"+postpar;
    }
    SSLSocketFactory  ssf= HttpsClientUtils.getSSFactory();
    try {
        realUrl= new URL(queryString);
        conn = (HttpsURLConnection)realUrl.openConnection();
        conn.setSSLSocketFactory(ssf);
        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        conn.setRequestProperty("accept", "*/*");
        conn.setRequestProperty("connection", "Keep-Alive");
        conn.setRequestProperty("user-agent",
                "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        if(method.toUpperCase().equals("POST")){
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            out = new PrintWriter(conn.getOutputStream());
            out.print(postpar);
            out.flush();
        }else{
            conn.connect();
        }
        in = new BufferedReader(
                new InputStreamReader(conn.getInputStream(),"utf-8"));
        String line;
        while ((line = in.readLine()) != null) {
            result += line;
        }
        json = JSONObject.fromObject(result);
    }finally {
        try {
            if (out != null) {
                out.close();
            }
            if (in != null) {
                in.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    return json;
}

2、可能需要的包

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSocketFactory;

import net.sf.json.JSONObject;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

 

以上是关于Https发送POST请求[亲测可用]的主要内容,如果未能解决你的问题,请参考以下文章

亲测可用的发送邮件方法分享

微信开发 模板消息发送

postman发送post请求,报405 Method Not Allowed

java代码发送post请求,并接收xml文件。。。 发送请求时要带参数

用java做一个httpClient 发送https 的get请求,需要证书验证的那种,求大神指点一下!

使用charls抓包微信小程序的解决方案(终极解决,各种坑不怕,亲测可用,不服来战!)