zoukankan      html  css  js  c++  java
  • 《第一行代码》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>
    

    再次运行就不会出现加载失败的提示,不过仍旧会显示一直加载,将项目关闭重新运行打开就可以了。之后再点击城市的话,也会显示一直加载,依旧是项目重新运行后可以点开,但再次点击之前点过的不会显示一直加载,只有没点过的会显示,目前不知道如何解决。

  • 相关阅读:
    思考:学习redis的数据结构应该从三个维度来学习?
    思考:一个程序员老说不会碰到或者用到复杂的数据结构或者算法,是这样吗?
    思考:软件系统设计的(前期)权衡?
    思考:一个推荐引擎工程师的能力覆盖
    思考:关于服务架构的取舍:
    模拟斗地主真人在线发牌
    java反射机制
    C-练习题
    java-线程的生命周期
    生产者和消费者模型
  • 原文地址:https://www.cnblogs.com/yhnCoder/p/15066457.html
Copyright © 2011-2022 走看看