您的位置:首页 > 理论基础 > 计算机网络

Java发送Https请求,返回JSONObject转为List

2016-12-01 11:09 435 查看
package com.szkingdom.kfps.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

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

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.lang3.StringUtils;

public class HttpsRequest {

/**
* 发送https请求共用体
*/
public static JSONObject sendPost(String url, String params, String method) throws IOException,
KeyManagementException, NoSuchAlgorithmException,
NoSuchProviderException {
// 请求结果
JSONObject json = new JSONObject();
PrintWriter out = null;
BufferedReader in = null;
String result = "";
URL realUrl;
HttpsURLConnection conn;
// 请求参数获取
// 字符串请求参数
if (StringUtils.isNotBlank(params)) {
url = url + "?" +params;
}
// 查询地址
String queryString = url;
// map格式的请求参数
SSLSocketFactory ssf = BZX509TrustManager.getSSFactory();
try {
realUrl = new URL(queryString);
conn = (HttpsURLConnection) realUrl.openConnection();
conn.setSSLSocketFactory(ssf);
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
if ("get".equals(method)) {
conn.connect();
} else {
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(params);
// flush输出流的缓冲
out.flush();
}
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;
}

public static void main(String[] args) {
try {
// 将JSONObject转为List
JSONObject json = new JSONObject();
json = HttpsRequest.sendPost("https://weis.htamc.com.cn/DLMiddleware_ht/query/queryfundlist?sign=UFbyma&market=a&appsecret=y6NozP&appkey=F9dI3u&callback=YW5ndWxhci5jYWxsYmFja3MuXzQ=&appversion=1&channel=app_ios", null, "get");
System.out.println(json);
Map map = (Map) json.get("retdata");
JSONArray array = (JSONArray) map.get("fundlist");
List<Map> fundsList = new ArrayList<Map>();
for (int i=0; i<array.size(); i++) {
Map fundMap = (Map) array.get(i);
System.out.println(fundMap);
fundsList.add(fundMap);
}
System.out.println(fundsList);
} catch (KeyManagementException | NoSuchAlgorithmException
| NoSuchProviderException | IOException e) {
e.printStackTrace();
}
}

}


数字证书请求的代码

package com.szkingdom.kfps.util;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class BZX509TrustManager   implements X509TrustManager {

public BZX509TrustManager(){}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub

}

@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub

}

@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}

public static SSLSocketFactory getSSFactory() throws NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException{
TrustManager[] tm = { new BZX509TrustManager()};
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
SSLSocketFactory ssf = sslContext.getSocketFactory();
return  ssf;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  https请求