`
cashlifei
  • 浏览: 7070 次
  • 性别: 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;         
      }         
    }       
分享到:
评论

相关推荐

    基于第三方服务器的简易QQ聊天程序

    在信息技术领域,开发一款基于第三方服务器的简易QQ聊天程序是一项常见的项目,旨在提供用户之间便捷的文本交流。这个程序的实现涉及到多个技术层面,包括网络通信、数据传输、服务器端处理以及客户端界面设计等。...

    java实现简陋版客户端服务器之间通信(json版本)

    - JSON数据的解析和生成可以使用第三方库,如Jackson或Gson。这里,我们假设已经将JSON字符串写入输出流,并从输入流读取。 2. **客户端(QQ_Client)**: - 客户端需要创建一个`Socket`实例,指定服务器的IP地址...

    java版 qq 支持视频

    视频聊天功能涉及音视频编解码技术,这通常需要第三方库,如FFmpeg。Java可以通过JNI(Java Native Interface)调用C/C++编写的库来处理音视频数据。此外,Java的`javax.media`包也提供了一些基本的多媒体处理能力...

    QQ自动登录程序.rar

    腾讯可能会有特定的API接口供第三方程序调用,或者开发者需要通过反编译、抓包分析等方式来模拟官方客户端的行为。 程序设计时,考虑到用户体验,可能需要加入一些额外功能,如记住账号、自动填充密码、多账号管理...

    java企业QQ

    13. **API设计**:可能提供RESTful API,允许第三方应用或服务与Java企业QQ集成,扩大其使用范围。 14. **日志管理**:使用Log4j等日志框架记录系统运行日志,有助于问题排查和性能监控。 综上所述,Java企业QQ...

    基于java开发的qq

    - `lib`:库文件夹,可能包含第三方依赖库。 - `build`:编译输出目录,包含编译后的字节码文件和最终的可执行程序。 - `docs`:文档目录,可能包含项目说明、API文档等。 - `test`:测试用例目录,用于验证代码功能...

    java QQ聊天程序源代码

    C#提供了异常处理结构(try-catch-finally)来捕获和处理运行时错误,同时可以使用`System.Diagnostics.Trace`或第三方库记录程序运行日志。 10. **持续集成与部署**:开发完成后,程序需要经过打包、测试和部署...

    基于java平台的qq

    6. **安全机制**:考虑到隐私和数据安全,QQ应用可能会采用加密技术,如SSL/TLS来保护通信数据的安全,防止被第三方窃取或篡改。 7. **事件驱动编程**:在GUI中,事件监听是必不可少的。例如,当用户点击登录按钮时...

    JAVA-QQ聊天

    JAVA有内置的异常处理机制,同时可以使用Log4j等第三方库进行日志记录。 10. **测试与调试**:最后,项目开发完成后,需要进行单元测试、集成测试和系统测试,确保所有功能的正确性和稳定性。JUnit是JAVA常用的单元...

    java QQ的源码对点聊天群聊

    项目可能使用了Java的序列化API,或者第三方库如JSON或protobuf,将消息对象转换为字节流,以便在网络上传输,到达目的地后再还原为对象。 6. **消息协议设计**:为了保证不同客户端和服务器之间能正确通信,项目...

    用java写的qq软件

    为了实现消息的序列化和反序列化,开发者可能使用了Java的序列化API或者第三方库,如Google的Protocol Buffers、Apache Thrift或JSON库(如Jackson或Gson)。 至于项目的具体实现,由于没有提供源代码,我们无法...

    java开源包8

    同时,任何第三方都可以使用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等各种语言开发包,大大节约了程序员的时间...

    android简单邮箱仿QQ邮箱

    Android的多媒体框架可以帮助处理这些附件,对于不常见的文件类型,可能需要第三方库支持。 9. **推送通知**: 实现新邮件即时提醒,可以借助Google的Firebase Cloud Messaging (FCM)服务,通过服务端向客户端发送...

    仿QQ 聊天室项目

    - **数据序列化与反序列化**:消息在传输过程中需要被转换为二进制形式,因此需要了解如何使用Java的序列化接口或者第三方库(如JSON、protobuf)进行数据的序列化和反序列化。 - **用户界面设计**:良好的用户体验...

Global site tag (gtag.js) - Google Analytics