《第一行代碼》14章cool weather酷歐天氣 網絡請求相關問題

按照書中的代碼敲了一遍,寫到了第二階段,在嘗試運行的時候發現會一直正在加載,並且出現“加載失敗”的提示,排除掉genymotion模擬器聯網問題以後,用了大半天才找到解決方案,但仍不是完美方案,稍後會提到。

在使用Debug查找錯誤時,發現在跑到

HttpUtil.sendOkHttpRequest(address, new Callback() {
@Override
    public void onFailure(@NonNull Call call, @NonNull IOException e) {
        ...
    }

    @Override
    public void onResponse(@NonNull Call call, @NonNull Response response)  {
        ...
    }
});

這段代碼時,直接就跳轉到結尾了,百度也只發現一個跟我一樣的情況,但那個還沒解決。

最後在看okhttp同步異步請求的時候,發現少寫了一些東西

新建res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

之後在AndroidManifest.xml的application中添加android:networkSecurityConfig="@xml/network_security_config"

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.coolweather">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:networkSecurityConfig="@xml/network_security_config"
        ...
        ...
    </application>

</manifest>

再次運行就不會出現加載失敗的提示,不過仍舊會顯示一直加載,將項目關閉重新運行打開就可以了。之後再點擊城市的話,也會顯示一直加載,依舊是項目重新運行後可以點開,但再次點擊之前點過的不會顯示一直加載,只有沒點過的會顯示,目前不知道如何解決。

發佈了12 篇原創文章 · 獲贊 2 · 訪問量 5419
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章