以前,我使用自定义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?另外,还有更好的方法吗? (是否需要首先检查以确保手机确实可以接受我说可以的压缩后的网页?)