java使用SSL方式获取qq第三方登录用户JSON信息串(https)

最近在做一个QQ第三方登录,其中用到HTTPS方式获取信息
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package testtemp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.URL;
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;         
    /**      
     * JAVA操作SSL协议,通过Socket访问Https的程序代码例子。      
     *@author Livee       
     *    
     *       
     */        
    public class TestTemp {         
      // 默认的HTTPS 端口         
      static final int HTTPS_PORT = 443;         
      public static void main(String argv[]) throws Exception {         
        //生成的查询串
          URL urlString=new URL("https://graph.qq.com/user/get_user_info?access_token=****获取的查询token****&oauth_consumer_key=***申请的app_key****&openid=***用户的openId***&format=json");
 // 受访主机        
        String host = urlString.getHost();         
        // 受访的页面         
        String url =urlString.getPath()+"?"+urlString.getQuery();
        // 自定义的管理器         
        X509TrustManager xtm = new J2TrustManager();         
        TrustManager mytm[] = { xtm };         
        // 得到上下文         
        SSLContext ctx = SSLContext.getInstance("SSL");         
        // 初始化         
        ctx.init(null, mytm, null);         
        // 获得工厂         
        SSLSocketFactory factory = ctx.getSocketFactory();         
        // 从工厂获得Socket连接         
        Socket socket = factory.createSocket(host, HTTPS_PORT);         
        // 剩下的就和普通的Socket操作一样了,中文乱码请转换一下编码方式         
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));         
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));         
        out.write("GET " + url + " HTTP/1.0\n\n");         
        out.flush();         
        
        String line;         
        StringBuffer sb = new StringBuffer();         
        while ((line = in.readLine()) != null) {         
          sb.append(line + "\n");         
        }         
        out.close();         
        in.close();         
        System.out.println(sb.toString());   //如果要获取Json字串,直接取个子串吧,从“{”开始      
      }         
    }         
      
    /**      
     * 自定义的认证管理类。      
     *       
     * @author Livee      
     *       
     */        
    class J2TrustManager implements X509TrustManager {         
      J2TrustManager() {         
        // 这里可以进行证书的初始化操作         
      }         
      // 检查客户端的可信任状态         
      public void checkClientTrusted(X509Certificate chain[], String authType) throws CertificateException {         
       // System.out.println("检查客户端的可信任状态...");         
      }         
      // 检查服务器的可信任状态         
      public void checkServerTrusted(X509Certificate chain[], String authType) throws CertificateException {         
       // System.out.println("检查服务器的可信任状态");         
      }         
      // 返回接受的发行商数组         
      public X509Certificate[] getAcceptedIssuers() {         
       // System.out.println("获取接受的发行商数组...");         
        return null;         
      }         
    }       

猜你喜欢

转载自cashlifei.iteye.com/blog/1851030