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://www.cnblogs.com/zhuziyu/p/9167115.html

时间: 2024-08-07 15:43:12

Https发送POST请求[亲测可用]的相关文章

C++发送HTTP请求---亲测可行(转)

转自:http://hi.baidu.com/benbearlove/item/1671c23017575825b3c0c53f 环境:xp sp3,vs2008,在静态库中使用 MFC [cpp] view plain copy #include <afxwin.h> #include <stdio.h> #include <windows.h> #include <string> #include "Wininet.h" #pragm

[转]QT子线程与主线程的信号槽通信-亲测可用!

近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号槽通信的方式,但是并不完全适合线程间的信号槽通信,这主要体现在自定义消息的传递上. 首先我们看看一般的方式:利用信号-槽发送Qt内置的元数据类型testthread.h 文件 #ifndef TESTTHREAD_H #define TESTTHREAD_H #include <QThread> #

is 32-bit instead of 64-bit 亲测可用

亲测可用 来源:https://stackoverflow.com/questions/27186243/use-32-bit-jni-libraries-on-64-bit-android 解决方法: 1.将以下内容添加到"build.gradle"defaultConfig中:添加 ndk {abiFilters"armeabi","armeabi-v7a","x86","mips"} 2.将andro

AD10 Altium Designer 10 破解文件-亲测可用

做了9年多的软件,从BSP,嵌入式软件到系统软件,从vxwork到QNX到linux..从通信行业做到机器人行业...从基层开发工程师到软件经理,系统架构师... 35岁了,有娃有家了,开始兼管硬件部门了,心理感慨万千... 如今以一个新兵的心态去开始迎接底层最基础的硬件,从装Altium Designer.开始吧.. 装了AD10,在网上找了很多破解方案,都不行,,最后找到一个亲测可用的,连接如下: https://files.cnblogs.com/files/stay-foolish198

rtsp流 测试地址(亲测可用)

开发一款视频监控实时视频播放器,用到的协议是RTSP,由于在开发测试阶段所以没有用服务器的链接, 最后找到一个亲测可用: rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov (转) 作者:hou_tong 来源:CSDN 原文:https://blog.csdn.net/tong_hou/article/details/77532245?utm_source=copy 原文地址:https://www.cnblogs.com/yizhizhan

visio2019专业版最新激活密钥,亲测可用

今天破例给大家分享几组visio2019专业版最新激活密钥,亲测可用DNFFH-9973Q-H4QWK-TF22F-8B7RKNBMFP-RCPP7-6Y8VJ-GPJDW-VH8MX 87NCM-887RB-7GMCR-23CR3-63C79FB6GH-NKBB9-HK2CT-TK6XB-KD9H9RTXN8-FW6J2-J3PMQ-DGGC6-XQC79JK76F-P2NKQ-CXY7X-76DD7-JQPBX 当然,每个密钥都具有时效性和激活次数限制,如果密钥失效或者被用完,小编vx: j

使用@Autowired注解无法注入(使用service报空指针异常)的问题解决,亲测可用!

@Component public class CommMain{ @Autowired public SysTransRecordCommonService sysTransRecordCommonService; public void saveTrans(SysTransRecord sysTransRecord){ sysTransRecordCommonService.save(sysTransRecord); } } 出现无法正常注入的情况,网上找了很多方法,最终以下这种方法亲测可用

Windows10安装pycocotools方法,亲测可用!

如果遇到:No module named 'pycocotools' 错误,说明你的环境需要安装pycocotools,以下介绍在Windows10下安装pycocotools的方法,这是本人结合看过的N个博客总结来的,亲测可用. 1. 从 https://github.com/pdollar/coco.git 这个网址下载源码(直接把压缩包下下来),解压到本地(按理来说哪儿都可以,但是既然能遇到这种问题,说明还是懂中文路径不友好的,所以放到英文路径下,个人建议为了方便管理和记忆,放到pytho

BCompare 4 key SN 亲测可用

支持BCompare 4.2.3 32位,亲测可用 w4G-in5u3SH75RoB3VZIX8htiZgw4ELilwvPcHAIQWfwfXv5n0IHDp5hv 1BM3+H1XygMtiE0-JBgacjE9tz33sIh542EmsGs1yg638UxVfmWqNLqu- Zw91XxNEiZF7DC7-iV1XbSfsgxI8Tvqr-ZMTxlGCJU+2YLveAc-YXs8ci RTtssts7leEbJ979H5v+G0sw-FwP9bjvE4GCJ8oj+jtlp7wFmp