第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

改造不適用于特定版本的機(jī)器人

改造不適用于特定版本的機(jī)器人

幕布斯7119047 2022-09-22 15:58:13
我在運(yùn)行Android 4.3的模擬器上遇到改造問題,我的設(shè)備在Android 4.4.2上,而相同的代碼在另一個(gè)帶有Android 7.1.1的模擬器上正常運(yùn)行每次嘗試執(zhí)行請(qǐng)求時(shí),我都會(huì)收到一個(gè)超時(shí)異常。getjava.net.SocketTimeoutException: failed to connect to jsonplaceholder.typicode.com/2606:4700:30::681c:3f5 (port 443) after 10000ms         at libcore.io.IoBridge.connectErrno(IoBridge.java:159)         at libcore.io.IoBridge.connect(IoBridge.java:112)         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)         at java.net.Socket.connect(Socket.java:842)         at okhttp3.internal.platform.AndroidPlatform.connectSocket(AndroidPlatform.java:73)         at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:246)         at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:166)         at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)代碼如下public interface Api {    String BASE_URL = "https://jsonplaceholder.typicode.com/";    @GET("posts")    Call<ArrayList<Post>> getPosts();}和對(duì) API 的調(diào)用Retrofit retrofit = new Retrofit.Builder()        .baseUrl(Api.BASE_URL)        .addConverterFactory(GsonConverterFactory.create())        .build();Api api = retrofit.create(Api.class);Call<ArrayList<Post>> call = api.getPostes();Log.i("RequestUrl", call.request().url().toString());call.enqueue(new Callback<ArrayList<Post>>() {    @Override    public void onResponse(Call<ArrayList<Post>> call, Response<ArrayList<Post>> response) {        mPostsList.setValue(response.body());    }    @Override    public void onFailure(Call<ArrayList<Post>> call, Throwable t) {        Log.e("Posts", "Error occurred", t);    }});
查看完整描述

3 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

它讀取 ,最初建議提高客戶端的連接超時(shí)值,正如本答案中所解釋的那樣 - 但是在查看當(dāng)前的源代碼時(shí)...這暗示了不兼容的協(xié)議。java.net.SocketTimeoutExceptionokhttp3.internal.platform.AndroidPlatform

服務(wù)器的SSL證書支持 ,因?yàn)檫@是安卓4.x所必需的(他們這邊沒有問題);問題在于,當(dāng)前版本的 不再支持,因此握手永遠(yuǎn)不會(huì)發(fā)生(這就是為什么它拋出這樣的誤導(dǎo)而不是)。TLS 1.0OkHttp3TLS 1.0SocketTimeoutExceptionSSLHandshakeException


使用 ,仍應(yīng)支持默認(rèn)配置OkHttp33.12.xMODERN_TLS -

但是可以指示使用配置來代替:OkHttp33.13.xCOMPATIBLE_TLS

/* ConnectionSpec.MODERN_TLS is the default value */

List tlsSpecs = Arrays.asList(ConnectionSpec.MODERN_TLS);


/* providing backwards-compatibility for API lower than Lollipop: */

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

    tlsSpecs = Arrays.asList(ConnectionSpec.COMPATIBLE_TLS);

}


OkHttpClient client = new OkHttpClient.Builder()

    .connectionSpecs(tlsSpecs)

    .build();

還必須將其設(shè)置為以下客戶端:Retrofit

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(Api.BASE_URL)
    .addConverterFactory(GsonConverterFactory.create())
    .setClient(client)
    .build();

請(qǐng)參閱 TLS 配置歷史記錄,了解每個(gè)版本的可用協(xié)議支持??雌饋恚踔烈呀?jīng)支持 ,因?yàn)閷硇枰?Android 。它甚至可能不需要降級(jí),因?yàn)槿匀挥兄?,而在它已?jīng)被移入;仍然不確定。OkHttp33.12.xTLS 1.3QOkHttp3MODERN_TLS3.12.xTLSv13.13.xCOMPATIBLE_TLS3.14.x

即使使用 的當(dāng)前版本,仍然可以將所需的協(xié)議添加回去,因?yàn)檫@是一個(gè)帶有方法的方法 - 沒有任何保證,不會(huì)有進(jìn)一步的不兼容性; 可能仍然是支持Android 4.x版本的最佳選擇,甚至可能有新功能的后移植。OkHttp3TLS 1.0ConnectionSpec.COMPATIBLE_TLSArrayList.add()3.12.x


查看完整回答
反對(duì) 回復(fù) 2022-09-22
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果您使用安卓 9(餅圖)或高于 28 的安卓 SDK,并通過 Api 調(diào)用通過改造獲得問題。

將此行添加到清單
改造問題android:usesCleartextTraffic="true"


查看完整回答
反對(duì) 回復(fù) 2022-09-22
?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

21之前的安卓有一些缺少SSL和改造將不起作用。使用谷歌服務(wù),您可以在HTTP請(qǐng)求工作后更新設(shè)備協(xié)議


    //compile 'com.google.android.gms:play-services-base:11.0.0'

     //remember to add the library in your dependencies


        //compile 'com.google.android.gms:play-services-base:$currentVersion'


        ProviderInstaller.installIfNeededAsync(this, new ProviderInstallListener() {


            @Override


            public void onProviderInstalled() {


                //Do your http request here


            }



            @Override


            public void onProviderInstallFailed(int errorCode, Intent recoveryIntent) {


                //sad face :C is sad


            }


        });


查看完整回答
反對(duì) 回復(fù) 2022-09-22
  • 3 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)