今天在做郭霖的大神的酷欧天气App,在代码运行的时候网络请求的事时候,老是运行onFalure()方法,不去执行onResponse方法,然后我就开始用debug调试,结果还是找不到问题出现哪里,然后我就上网找找解决办法。
private void queryFromServer(String address, final String type) { showProgressDialog(); HttpUtil.sendOkHttpRequest(address, new Callback() { @Override public void onResponse(Call call, Response response) throws IOException { boolean result = false; String responseText = response.body().string(); Log.d("onResponse", "onResponse: "+responseText); if ("province".equals(type)) { result = Utility.handleProvinceResponse(responseText); Log.d("province =====>", "onResponse: "+result); } else if ("city".equals(type)) { result = Utility.handleCitiesResponse(responseText, selectedProvince.getId()); } else if ("county".equals(type)) { result = Utility.handleCountyResponse(responseText, selectedCity.getId()); } if (result) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { closeProgressDialog(); if ("province".equals(type)) { queryProvinces(); } else if ("city".equals(type)) { queryCities(); } else if ("county".equals(type)) { queryCounties(); } } }); } } @Override public void onFailure(Call call, IOException e) { Log.d("onFailure", "onFailure: "); // 通过runOnUiThread()方法回到主线程处理逻辑 getActivity().runOnUiThread(new Runnable() { @Override public void run() { closeProgressDialog(); Toast.makeText(getContext(), "加载失败", Toast.LENGTH_SHORT). show(); // Log.d("zjjadsdasd=======", "run: "+result); } }); } }); }
看到网上说:在res/xml下创建network_security_config.xml
里面添加代码:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--默认允许所有网址使用非安全连接-->
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
最后,在manifest文件中的application中加入下面代码就解决了
android:networkSecurityConfig="@xml/network_security_config"