Java的post(HTTPS)请求-----接口测试
package com.ju.util; import java.io.BufferedReader;
import java.io.IOException; import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map; import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager; import net.sf.json.JSONObject; import java.security.cert.X509Certificate; import javax.net.ssl.X509TrustManager; public class HttpPost { private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}; private static void trustAllHosts() {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
} public void checkClientTrusted(X509Certificate[] chain, String authType) {
} public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
}};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
} public static String https(String url, Map<String, String> params) throws Exception {
// 构建请求参数
String result = "";
PrintWriter out = null;
BufferedReader in = null; String sendString = "";
JSONObject json = JSONObject.fromObject(params);
System.out.println("发送报文:" + json.toString());
sendString = json.toString(); System.out.println("ERP连接:" + url);
System.out.println("发送给ERP信息:" + sendString); try {
trustAllHosts();
URL url2 = new URL(url); HttpsURLConnection urlCon = (HttpsURLConnection) url2.openConnection();
urlCon.setHostnameVerifier(DO_NOT_VERIFY);
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setRequestMethod("POST");
urlCon.setRequestProperty("Content-type", "application/json;charset=UTF-8");
// 发送POST请求必须设置如下两行
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
// 获取URLConnection对象对应的输出流
OutputStream os = urlCon.getOutputStream();
//参数是键值队 , 不以"?"开始
os.write(sendString.getBytes());
//os.write("googleTokenKey=&username=admin&password=5df5c29ae86331e1b5b526ad90d767e4".getBytes());
os.flush();
// 发送请求参数
//out.print(a);
// flush输出流的缓冲
//out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(urlCon.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
e.printStackTrace();
} finally {// 使用finally块来关闭输出流、输入流
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
} public static String http(String url, Map<String, String> reqMap) throws Exception { URL u = null; HttpURLConnection con = null; // 构建请求参数 //StringBuffer sb = new StringBuffer();
String sendString = "" ;
//String tradeCode = params.get(ParamsConfig.keyTradeCode);
JSONObject json = JSONObject.fromObject(reqMap);
System.out.println("发送报文:"+json.toString());
sendString = json.toString();
/*if(tradeCode.equals(TradeCode.TRANS_WXAPP_PAY) || tradeCode.equals(TradeCode.TRANS_APP_QUERY)
|| tradeCode.equals(TradeCode.TRANS_TYPE_COLLECT) || tradeCode.equals(TradeCode.TRANS_TYPE_QUERY_COLLECT_TXN)){
JSONObject json = JSONObject.fromObject(params);
System.out.println("发送报文:"+json.toString());
sendString = json.toString();
} else {
if (params != null) { for (Entry<String, String> e : params.entrySet()) { sb.append(e.getKey()); sb.append("="); sb.append(e.getValue()); sb.append("&"); }
sendString = sb.substring(0, sb.length() - 1);
}
}*/
System.out.println("ERP连接:" + url);
System.out.println("发送给ERP信息:" + sendString);
// logger.info("ERP连接:" + url);
// logger.info("发送给ERP信息:" + sb.toString()); // 尝试发送请求 try { u = new URL(url); con = (HttpURLConnection) u.openConnection(); con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); // con.setConnectTimeout(300*1000);
//
// con.setReadTimeout(300*1000); con.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded"); OutputStreamWriter osw = new OutputStreamWriter(con
.getOutputStream(), "UTF-8"); osw.write(sendString); osw.flush(); osw.close(); } catch (Exception e) {
e.printStackTrace();
throw new Exception("与服务器连接发生错误:"+e.getMessage()); } finally { if (con != null) { con.disconnect(); } } // 读取返回内容 StringBuffer buffer = new StringBuffer(); try { BufferedReader br = new BufferedReader(new InputStreamReader(con .getInputStream(), "UTF-8")); String temp; while ((temp = br.readLine()) != null) { buffer.append(temp);
} } catch (Exception e) {
e.printStackTrace();
throw new Exception("从服务器获取数据失败:"+e.getMessage()); } return buffer.toString(); } }
Java的post(HTTPS)请求-----接口测试的更多相关文章
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
java实现 HTTP/HTTPS请求绕过证书检测代码实现 1.开发需求 需要实现在服务端发起HTTP/HTTPS请求,访问其他程序资源. 2.URLConnection和HTTPClient的比较 ...
- Java实现 HTTP/HTTPS请求绕过证书检测
java实现 HTTP/HTTPS请求绕过证书检测 一.Java实现免证书访问Https请求 创建证书管理器类 import java.security.cert.CertificateExcepti ...
- java实现的https请求
转载并修改自 http://www.blogjava.net/etlan/archive/2006/06/29/55767.html Https请求 超文本传输协议HTTP协议:被用于在Web浏览器和 ...
- java如何发起https请求
1.写一个SSLClient类,继承至HttpClient import java.security.cert.CertificateException; import java.security.c ...
- 简述Java中Http/Https请求监听方法
一.工欲善其事必先利其器 做Web开发的人总免不了与Http/Https请求打交道,很多时候我们都希望能够直观的的看到我们发送的请求参数和服务器返回的响应信息,这个时候就需要借助于某些工具啦.本文将采 ...
- 【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
问题报错 今天上线了我开发的一个OAuth2单点登录客户端的实现,在测试系统验证没问题,到生产环境由于单点登录服务端HTTPS协议,报错如下: I/O error on POST request fo ...
- 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头
目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, H ...
- java 实现https请求
java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从 ...
- java中模拟http(https)请求的工具类
在java中,特别是java web中,我们经常需要碰到的一个场景是我们需要从服务端去发送http请求,获取到数据,而不是直接从浏览器输入请求网址获得相应.比如我们想访问微信接口,获取其返回信息. 在 ...
- Java HttpClient伪造请求之简易封装满足HTTP以及HTTPS请求
HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 jav ...
随机推荐
- 如何用nodejs启一个前端服务
1.新建文件夹,如 notice 2.新建页面和js文件,如 index.html server.js 3.index.html页面内容随你写,如: <!DOCTYPE html> < ...
- CF 732F Tourist Reform——v-SCC+dfs
题目:http://codeforces.com/contest/732/problem/F 给无向图定向使得从每个点出发能去的点数最小值最大. SCC.点内部dfs定向.点间以siz最大的为起点反向 ...
- DataX实现oracle到oracle之间的数据传递
首先需要注意的是DATAX是通过JDBC的方式读取ORACLE数据,然后通过OCI的方式写数据,DX也可以通过JDBC写的方式进行,但是OCI比JDBC速度更快. 进入DataX安装目录的bin目 ...
- HDU5478(快速幂)
Can you find it Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- HDU1560(迭代加深搜索)
DNA sequence Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- C# winfrom FastReport 变量设计加载
1.源码 DataTable dt5 = new DataTable(); dt5 = SqlHelper.SqlGetDataTable(StrSql, "tbEmpCont") ...
- Hybrid App混合模式移动应用开发(AngularJS+Cordova+Ionic)
以前公司开发了某手机APP是通过jquerymobile来实现的,发现它对手机上的原生设备无能为力.于是在下一个项目到来之际,通过筛选最终决定使用cordova+Ionic.看起来简单,但是因为他们各 ...
- PhoneGap打Android包报错
1.下载AndroidSDK,安装 2.下载Phonegap,解压,为以后打包用 3.下载Node.js,安装 4.下载并安装Ant工具 5.配置环境变量 ANT_HOME=ANT主目录路径 PATH ...
- 使用mui框架后a标签无法跳转
由于最近工作项目上使用到前台mui框架,笔者在将H5转换为jsp时,遇见各种各样问题,原因归结为对mui框架不熟悉,今天就遇见一个特别奇怪的问题,界面中超链接<a>标签无法跳转,笔者试着添 ...
- Python操作远程机器
操作远程机器主要使用的有paramiko,WMI(Windows Management Instrumentation),SMBConnection. paramiko paramiko使用SSH2协 ...