java-HttpGet /客户端和HTTPS
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-HttpGet /客户端和HTTPS,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2023字,纯文字阅读大概需要3分钟。
内容图文
以前,我使用自定义TrustManager谈论过here来做到这一点
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
MyXMLHandler mHandler = new MyXMLHandler();
xr.setContentHandler(mHandler);
xr.parse(new InputSource(buildUrlString()));
(其中buildUrlString()返回包含https:// url的字符串)可以正常工作.但是,我现在希望能够向相同的URL发送用于gzip压缩的Accept-Encoding标头.我可以这样
HttpUriRequest request = new HttpGet(buildUrlString());
request.addHeader("Accept-Encoding", "gzip");
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
InputStream instream = response.getEntity().getContent();
Header contentEncoding = response.getFirstHeader("Content-Encoding");
if ((contentEncoding != null)
&& contentEncoding.getValue().equalsIgnoreCase("gzip"))
{
instream = new GZIPInputStream(instream);
}
xr.parse(new InputSource(instream));
但这会带回我要忽略的“不受信任的服务器证书”错误.如何使它执行HTTPS?另外,还有更好的方法吗? (是否需要首先检查以确保手机确实可以接受我说可以的压缩后的网页?)
解决方法:
如果要使用Apache HTTP客户端API,可以通过扩展DefaultHttpClient继续使用自定义TrustManager.
import org.apache.http.conn.ssl.SSLSocketFactory;
public class MyHttpClient extends DefaultHttpClient {
final Context context;
public MyHttpClient(Context context) {
this.context = context;
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https", newSslSocketFactory(), 443));
return new SingleClientConnManager(getParams(), registry);
}
private SSLSocketFactory newSslSocketFactory() {
try {
TrustManager tm = new MyCustomTrustManager();
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, new TrustManager[] {tm}, null);
SSLSocketFactory sf = new SSLSocketFactory(ctx);
return new SSLSocketFactory(ctx);
} catch (Exception e) {
throw new Error(e);
}
}
}
内容总结
以上是互联网集市为您收集整理的java-HttpGet /客户端和HTTPS全部内容,希望文章能够帮你解决java-HttpGet /客户端和HTTPS所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。