`
cashlifei
  • 浏览: 6863 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

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;         
      }         
    }       
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java开源包8

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包11

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包6

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包9

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包4

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包101

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包5

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包10

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包1

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包3

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包2

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    java开源包7

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

    Java资源包01

    同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...

Global site tag (gtag.js) - Google Analytics