@panda creator的热更新有什么特殊吗?
安卓代码
Cocos2dxDownloader.java
这个文件中, 使用的是 com.loopj.android.http.AsyncHttpClient; 做具体的 http请求,
但看代码, 好像只是 private AsyncHttpClient _httpClient = new AsyncHttpClient();
并没有设置 ssl 相关的参数,
据说是要这样的
//AsyncHttpClient asycnHttpClient = new AsyncHttpClient(); //请求http的方式
AsyncHttpClient asycnHttpClient = new AsyncHttpClient(true, 80, 443);//请求https的方式
而你们代码跟ssl相关的只有
downloader._httpClient.allowRetryExceptionClass(javax.net.ssl.SSLException.class);
导致一直重试, 热更不到就算了, 还一直卡在那
@panda
03-10 15:02:40.810 17604-21432/org.cocos2dx.cpp_tests D/cjh: download: https://cdn.qiyimofang.com/vegetables/ssl/project.manifest
03-10 15:02:40.969 17604-17604/org.cocos2dx.cpp_tests D/Cocos2dxDownloader: onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@cc733b9 file:/data/user/0/org.cocos2dx.cpp_tests/files/CppTests/DownloaderTest/big file.tmp
我测试了,你这个文件可以下载的。我没修改任何Downloader相关的代码。
试下热更全套?
你能确认一下,是所有文件的下载都有问题,还是就特殊文件?
我这里确认了Downloader没有问题。
我这边确认了
就安卓有问题, 这是样例里的,
只是把最后一个下载大文件的链接, 改成 https://cdn.qiyimofang.com/vegetables/ssl/project.manifest
其它三个测试是通过的
那你修改为如下的方式,能够正常么?
好诡异,我这里下载都正常的。
能否切换到4G网络再试试?
换成
AsyncHttpClient asycnHttpClient = new AsyncHttpClient(true, 80, 443);//请求https的方式
就可以了 包括http
我是用小米设备 测试的
原来的 AsyncHttpClient asycnHttpClient = new AsyncHttpClient()
wifi 4g都一样的结果, 报一样的错误
@dumganhar
https://github.com/loopj/android-async-http/blob/master/library/src/main/java/com/loopj/android/http/AsyncHttpClient.java
差别就在 fixNoHttpResponseException 这个参数 是true, 还是false
/**
* Creates a new AsyncHttpClient with default constructor arguments values
*/
public AsyncHttpClient() {
this(false, 80, 443);
}
/**
* Creates a new AsyncHttpClient.
*
* @param httpPort non-standard HTTP-only port
*/
public AsyncHttpClient(int httpPort) {
this(false, httpPort, 443);
}
/**
* Creates a new AsyncHttpClient.
*
* @param httpPort non-standard HTTP-only port
* @param httpsPort non-standard HTTPS-only port
*/
public AsyncHttpClient(int httpPort, int httpsPort) {
this(false, httpPort, httpsPort);
}
/**
* Creates new AsyncHttpClient using given params
*
* @param fixNoHttpResponseException Whether to fix issue or not, by omitting SSL verification
* @param httpPort HTTP port to be used, must be greater than 0
* @param httpsPort HTTPS port to be used, must be greater than 0
*/
public AsyncHttpClient(boolean fixNoHttpResponseException, int httpPort, int httpsPort) {
this(getDefaultSchemeRegistry(fixNoHttpResponseException, httpPort, httpsPort));
}
可能是证书的的问题吧,
fixNoHttpResponseException Whether to fix issue or not, by omitting SSL verification
ssl证书验证不通过。
不过报的错好奇怪
javax.net.ssl.SSLException: certificate for << cdn.qiyimofang.com >> doesn’t match any of the subject alternative names:[*.ucd1.pp.uc.cn]
看起来好像 域名一定要 匹配 *.ucd1.pp.uc.cn 的才是正经证书
不过, 我填 https://www.baidu.com 是下载得到的。
应该是这个ssl证书的问题。
难道跟当前android设备的系统ssl证书有关系?
不懂啊, 而且 windows 也不行, 也要换成http的才能热更, 就只有ios可以。
好像是那ssl证书的问题, 可那个证书是正规的啊, 阿里云上买的, chrome浏览器访问是绿色的。
我也遇到了相同的问题,可以请教一下吗?
弱弱的问下。。。这个要怎么解决呢
这是服务器不支持 sni啊
我安卓的部分机子加载微信头像也是报这个错,在wifi的情况下就报这错,切换4G就能加载成功不报错了。可是不可能让客户都只切换4G玩呀,这个怎么解决的呀?

