当compileSdkVersion为27时,它可以正常工作,但是当compileSdkVersion为27时,它可以正常工作。 更改为28,则无法访问该网址。
我的代码
public void getCategory(final OnCategoryReceived onCategoryReceived) {
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, "http://my-domin.ir/api/getcategory", null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
/* progressBar.setVisibility(View.GONE);*/
List<Category> categories = new ArrayList<>();
for (int i = 0; i < response.length(); i++) {
Category category = new Category();
try {
JSONObject jsonObject = response.getJSONObject(i);
category.setId(jsonObject.getInt("id"));
category.setName(jsonObject.getString("name"));
category.setImage(jsonObject.getString("image"));
categories.add(category);
} catch (JSONException e) {
e.printStackTrace();
}
}
onCategoryReceived.onReceived(categories);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
request.setRetryPolicy(new DefaultRetryPolicy(18000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(context).add(request);
}
答案 0 :(得分:0)
从Android 9(API级别28)开始,默认情况下禁用明文支持。选中this
您将需要创建文件 res / xml / network_security_config.xml-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>
</network-security-config>
并在manifest.xml中设置以下代码以允许纯文本。
AndroidManifest.xml-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
答案 1 :(得分:0)
从Android 9(28-Pie版本)开始,Android禁用了明文流量支持。我在Android 9版本的android中遇到了相同的问题。我只添加了
android:usesCleartextTraffic="true"
在我的<Application>
的{{1}}标签中,对我来说,在28(9饼)中正常工作。
AndroidManifest.xml