最近在做一个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聊天程序是一项常见的项目,旨在提供用户之间便捷的文本交流。这个程序的实现涉及到多个技术层面,包括网络通信、数据传输、服务器端处理以及客户端界面设计等。...
- JSON数据的解析和生成可以使用第三方库,如Jackson或Gson。这里,我们假设已经将JSON字符串写入输出流,并从输入流读取。 2. **客户端(QQ_Client)**: - 客户端需要创建一个`Socket`实例,指定服务器的IP地址...
视频聊天功能涉及音视频编解码技术,这通常需要第三方库,如FFmpeg。Java可以通过JNI(Java Native Interface)调用C/C++编写的库来处理音视频数据。此外,Java的`javax.media`包也提供了一些基本的多媒体处理能力...
腾讯可能会有特定的API接口供第三方程序调用,或者开发者需要通过反编译、抓包分析等方式来模拟官方客户端的行为。 程序设计时,考虑到用户体验,可能需要加入一些额外功能,如记住账号、自动填充密码、多账号管理...
13. **API设计**:可能提供RESTful API,允许第三方应用或服务与Java企业QQ集成,扩大其使用范围。 14. **日志管理**:使用Log4j等日志框架记录系统运行日志,有助于问题排查和性能监控。 综上所述,Java企业QQ...
- `lib`:库文件夹,可能包含第三方依赖库。 - `build`:编译输出目录,包含编译后的字节码文件和最终的可执行程序。 - `docs`:文档目录,可能包含项目说明、API文档等。 - `test`:测试用例目录,用于验证代码功能...
C#提供了异常处理结构(try-catch-finally)来捕获和处理运行时错误,同时可以使用`System.Diagnostics.Trace`或第三方库记录程序运行日志。 10. **持续集成与部署**:开发完成后,程序需要经过打包、测试和部署...
6. **安全机制**:考虑到隐私和数据安全,QQ应用可能会采用加密技术,如SSL/TLS来保护通信数据的安全,防止被第三方窃取或篡改。 7. **事件驱动编程**:在GUI中,事件监听是必不可少的。例如,当用户点击登录按钮时...
JAVA有内置的异常处理机制,同时可以使用Log4j等第三方库进行日志记录。 10. **测试与调试**:最后,项目开发完成后,需要进行单元测试、集成测试和系统测试,确保所有功能的正确性和稳定性。JUnit是JAVA常用的单元...
项目可能使用了Java的序列化API,或者第三方库如JSON或protobuf,将消息对象转换为字节流,以便在网络上传输,到达目的地后再还原为对象。 6. **消息协议设计**:为了保证不同客户端和服务器之间能正确通信,项目...
为了实现消息的序列化和反序列化,开发者可能使用了Java的序列化API或者第三方库,如Google的Protocol Buffers、Apache Thrift或JSON库(如Jackson或Gson)。 至于项目的具体实现,由于没有提供源代码,我们无法...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间...
Android的多媒体框架可以帮助处理这些附件,对于不常见的文件类型,可能需要第三方库支持。 9. **推送通知**: 实现新邮件即时提醒,可以借助Google的Firebase Cloud Messaging (FCM)服务,通过服务端向客户端发送...
- **数据序列化与反序列化**:消息在传输过程中需要被转换为二进制形式,因此需要了解如何使用Java的序列化接口或者第三方库(如JSON、protobuf)进行数据的序列化和反序列化。 - **用户界面设计**:良好的用户体验...