小编Leś*_*icz的帖子

使用OKHTTP3认证固定进行改造

我正在使用带有OKHTTP3客户端的Retrofit 1.9,我正在尝试添加认证固定.以下是相关代码:

String hostname = "xxxxxx.xx";

CertificatePinner certificatePinner = new CertificatePinner.Builder()
    .add(hostname, "sha1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=")
    .build();

OkHttpClient client = new OkHttpClient.Builder()
     .certificatePinner(certificatePinner)
     .build();

return new RestAdapter.Builder()
     .setRequestInterceptor(request -> {
         request.addHeader("CONTENT-TYPE", "application/json");
     })
     .setEndpoint("https://xxxxxxxxxxxx").
     .setClient(new Ok3Client(client))
     .build();
Run Code Online (Sandbox Code Playgroud)

不幸的是它似乎没有用.我没有

"javax.net.ssl.SSLPeerUnverifiedException: Certificate pinning failure!"
Run Code Online (Sandbox Code Playgroud)

异常,甚至我的主机或SHA都不正确.有谁能解释为什么?

ssl android retrofit okhttp3 certificate-pinning

6
推荐指数
1
解决办法
4868
查看次数

Kotlin警告:类型的条件分支结果是Any的隐含性?

我有"类型的条件分支结果......是任意的隐形演员?" 当我尝试做这样的事情时发出警告:

objects?.forEach {

     val gson = Gson()

     val chatObject = if(it.type == CHAT_TEXT_TYPE) gson.fromJson(it.value, ChatText::class.java)  //WARNING
                      else gson.fromJson(it.value, ChatProduct::class.java) //WARNING

     //TEST
     if(chatObject is ChatText) Log.e("ChatText: It works!", chatObject.text)
     if(chatObject is ChatProduct) Log.e("ChatProduct: It works!", chatObject.name)
}
Run Code Online (Sandbox Code Playgroud)

但最后它的确有效.我的代码有什么问题吗?是否有可能删除此警告?

编辑(正如@Xavier Bouclet建议的那样 - 警告消失了)

val chatObject = when (it.type)
            {
                CHAT_TEXT_TYPE ->  gson.fromJson(it.value, ChatText::class.java)
                CHAT_PRODUCT_TYPE -> gson.fromJson(it.value, ChatProduct::class.java)
                else -> gson.fromJson(it.value, Any::class.java)
            }
Run Code Online (Sandbox Code Playgroud)

warnings casting kotlin

5
推荐指数
1
解决办法
1942
查看次数