如何让我的 TRAFFICY GET 请求从非安全协议返回信息?



正如标题所说,除非目标是https,否则我的get请求不会返回任何内容。 我没有看到任何错误以进行故障排除。 出于安全目的,我需要在清单中启用 http 的内容吗?

如果您在运行 Android Pie (9.0) 或更高版本的设备/模拟器上运行您的应用,并且看到此问题,则可能与明文流量设置为 false 有关,因为操作系统在此 API 级别或更高级别默认执行此操作。

在此处查看此SO答案,了解为什么这是一个问题以及如何解决它。

如果只想在测试中运行它并确保调用正常工作,请将以下代码添加到清单中:

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>

它应该有效。请注意,如果我将其留在发布代码中,我已经从 Play 商店中拒绝了应用程序。

要在凌空抽射中获取错误,您需要实现凌空错误侦听器,例如

StringRequest request = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("response", response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return parameters;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
......
return headers;
}
};
RequestQueue queue = Volley.newRequestQueue(Class.this);
queue.add(request);

}

最新更新