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; } }
相关文章推荐
- Java web 项目发送请求到 thinkphp 项目返回Json字符串
- HttpURLConnection 发送post请求。并将结果以JSONObject对象返回的轮子
- java 通过发送json,post请求,返回json数据的方法
- java 通过发送json,post请求,返回json数据
- 利用ASIHTTPRequest请求java服务和JSONKit解析返回的json串
- SSH JQuery Json ajax请求返回List对象集合
- java代码发送JSON格式的httpPOST请求
- jQuery通过Ajax向PHP服务端发送请求并返回JSON数据
- 使用Ajax发送Struts2请求返回JSON数据格式
- VPOS MAS-CNP接口——建立https连接发送请求并接收返回的XML数据流
- java代码发送JSON格式的httpPOST请求
- Java用org.apache.http.client的HttpClient发送Post请求 可获取返回Header
- Java服务器端List对象转换为JSON对象并返回客户端实例
- 利用ASIHTTPRequest请求java服务和JSONKit解析返回的json串
- java代码发送JSON格式的httpPOST请求
- java如何解析json字符串(List<Map<String,Object>成功的类型)
- Java用org.apache.http.client的HttpClient发送Post请求 可获取返回Header
- Java中使用hql,sql查询返回的list<Object> 转成需要的实体对象--方法讲解!
- 通过java内省,把json对象转为Object
- java对象、List转为json格式的数据