/* * 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; } }
java使用SSL方式获取qq第三方登录用户JSON信息串(https)
最近在做一个QQ第三方登录,其中用到HTTPS方式获取信息
猜你喜欢
转载自cashlifei.iteye.com/blog/1851030
今日推荐
周排行