android https 证书校验问题

ksabrina ksabrina 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在做C/S https请求时,服务端加入了证书校验。我在发送请求时已经做了信任所有证书的动作,但是获取返回数据,进行数据流操作时,报javax.net.ssl.SSLException: Connection closed by peer异常,求大神指点!!!
代码如下:

public static Response connect(Request request)
{
Response response = new Response();
response.setCorrespondingRequest(request);
HttpURLConnection httpConn = null;

System.setProperty("http.keepAlive", "false");

try
{
SSLContext sc = SSLContext.getInstance("SSL");

sc.init(null, new TrustManager[] { new MyTrustManager() }, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new MyHostnameVerifier());

URL url = new URL(request.getUrl());

if (!url.getProtocol().toLowerCase().equals("https"))
{
httpConn = (HttpURLConnection) url.openConnection();
}
else
{
httpConn = getHttpsConn(url);
}

httpConn.setDoInput(true);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);

// set request method.
setRequestMethod(request, httpConn);

// set request property.
setRequestProperty(request, httpConn);

httpConn.setConnectTimeout(CONNECT_TIMEOUT);
httpConn.setReadTimeout(READ_TIMEOUT);

if (request.getBody() != null)
{
// set request content.
Logger.i(TAG, "request body : \n" + request.getBody());
byte[] data = request.getBody().getBytes("UTF-8");

// write data.
OutputStream os = httpConn.getOutputStream();
if (request.isGZip())
{
GZIPOutputStream gzos = new GZIPOutputStream(os);
gzos.write(data);
gzos.flush();
gzos.close();
}
else
{
os.write(data);
os.flush();
}
os.close();
}

// get response code.
int responseCode = initResponseCode(response, httpConn);
// connect OK(200) or Created(201)

}
catch 省略

}

红色OutputStream os = httpConn.getOutputStream();报异常。
...全文

相关推荐

Android webview手动校验https证书(by 星空武哥)

有些时候由于Android系统的bug或者其他的原因,导致我们的webview不能验证通过我们的https证书,最明显的例子就是华为手机mate7升级到Android7.0后,手机有些网站打不开了,而更新了webview的补丁后就没问题了

weixin_38737630

安卓应用源码Android安全卫士源码

安卓应用源码Android 安全卫士源码

emma20080101

Android APP之WebView校验SSL证书的方法

主要介绍了Android APP之WebView校验SSL证书的方法,需要的朋友可以参考下

weixin_38638033

Android 7.0系统webview 显示https页面空白处理方法

最近开发的时候,偶尔遇到在线上稳定运行的webview内嵌的h5页面加载不出来,一直定位不到具体原因(因为我们自己做的兼容性测试上不重现),看系统日志也没有发现什么问题,后来咨询了用户手机的型号,发现是7.0或者6.0以上的个别机型会出现。 后来借到了一台业务的手机,型号是:三星 S6 EDGE,SM-G9205,在大多数机型上运行正常的页面,在这个机器上如下图: 这个页面在近期的变更是从http切换到https,由于之前的页面是http,我们在切换的时候,除了url之外,并未对webview的ssl校验做特殊的处理。 问题就出在这里,webview在加载https的时候,通常会用手机根证书

weixin_38644233

安卓开发-从android中调用web service的源码.zip

安卓开发-从android中调用web service的源码.zip

Like_Bamboo
评论 6
收藏 已收藏
分享
返回顶部
ksabrina
Android 80,489 成员 91,375 内容