新的起点

想起八年前,只身来到青岛,到现娃都能打酱油了,感觉转眼间的事.

在海尔工作八年多,差一点就能获得海尔金牌了(十年).也许是想进行一轮新的挑战,选择换份工作,换个方向.

新的起点,在PicoVR虚拟现实领域,与新的团队一起,共同创造A New Reality.

Hackpwn,Smartcare2,Markdown

我们的Smartcare在Hackpwn2015上被白冒子黑客提及,APK被反编译后分析了我们的执行流程与工作原理,但被某些媒体报道成可以被黑客任意控制家中所有电器,开门开窗。人言可畏,媒体如果都这么不负责任,胡乱来写,甚至像写神话剧本来报道科技新闻,多少人将被歪曲与误导。

Smartcare第二代也进入了最后的联合调试期,各项功能都在做最好的调整,相比第一代,更值得期待。

调整了下博客后台,之后的文章使用Markdown格式来写,再也不用担心格式乱不统一了。

Volley 开启对Https的支持,并且忽略对Hostname的检查

直接上代码:

mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext(),
new HurlStack(null, newSslSocketFactory()));

详见这篇文章,这里不在重复.

但仍有报错,

java.io.IOException: Hostname ... was not verified

证书的Hostname与实际的不匹配,历史原因不能修改证书。

别外的解决方法是让Https忽略对Hostname的Verify。但对Volley来说尝试了多种方法都不行。

之前一直使用的是apache的SSLSocketFactory,org.apache.http.conn.ssl.SSLSocketFactory

可以调用 setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER)来进行设置。

但Vollley中HurlStack使用的是 javax.net.ssl.SSLSocketFactory,没有找到可以进行设置的地方。

无耐之下,只能修改Volley的原代码,基于官方6.11日版本:

修改com.android.volley.toolbox.HurlStack的openConnection()

编译并导入测试可以正常通信,如相关资料所说,此法仅用于测试,正式使用还是很危险的。

// use caller-provided custom SslSocketFactory, if any, for HTTPS
if ("https".equals(url.getProtocol()) && mSslSocketFactory != null) {
    ((HttpsURLConnection)connection).setHostnameVerifier(new HostnameVerifier() {
        @Override
        public boolean verify(String arg0, SSLSession arg1) {
            return true;
        }
    });
    ((HttpsURLConnection)connection).setSSLSocketFactory(mSslSocketFactory);
}