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

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 fundsList = new ArrayList();
            for (int i=0; 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)