java - 不允许到 www.sia.co.id 的明文 HTTP 流量。不能在 android 版本 pie 中工作,但可以在 oreo 和所有 pie 下工作。为什么?
问题描述
private String SendAndReceived() {
HttpURLConnection con = Connector.connect(urlAddress);
if (con == null) {
return null;
}
try {
OutputStream os = con.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
bw.write(new DataPackager(query).packData());
bw.flush();
bw.close();
os.close();
int responseCode = con.getResponseCode();
StringBuffer response = new StringBuffer();
if (responseCode == con.HTTP_OK) {
InputStream is = con.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
if (br != null) {
while ((line = br.readLine()) != null) {
response.append(line + "\n");
}
} else {
return null;
}
br.close();
is.close();
return response.toString();
} else {
return String.valueOf(responseCode);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
调试:
W/System.err: java.io.IOException: Cleartext HTTP traffic to www.yesia.com not permitted
W/System.err: at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
W/System.err: at com.yesia.searchrecyclerview.MySQL.SenderReceiver.SendAndReceived(SenderReceiver.java:93)
W/System.err: at com.yesia.searchrecyclerview.MySQL.SenderReceiver.doInBackground(SenderReceiver.java:51)
W/System.err: at com.yesia.searchrecyclerview.MySQL.SenderReceiver.doInBackground(SenderReceiver.java:19)
解决方案
您必须在 AndroidManifes.xml 文件的应用程序标记上添加android:usesCleartextTraffic="true"的属性。
并添加这个。
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
查看这个官方博客了解为什么会发生这种情况,我们必须在清单文件中添加。
推荐阅读
- ios - 使用 Swift 4 关闭 iOS 中的所有模式
- python - 关于多个输出的 Keras 回归问题中的损失加权
- twitter-bootstrap - 引导输入字段方角错误
- c++ - 通过 clang-format 对几乎精确的结构进行不同的格式化
- javascript - 可以使用 python 在线下载 javascript 生成的 CSV 文件吗?
- javascript - React 数组为什么会这样?
- azure - 来自 Visual Studio 项目的带有 python 的 Azure 应用服务
- python - 我如何通过 python 使用用户名、密码来制作 SSl 连接服务器?
- c++ - c++ string.find() 返回字符串的长度
- javascript - 使用 Three.js 创建带有点的桩的 3D 模型