如果Android版本是6或7但是崩溃的Android版本9,下面的代码运行成功
public class TestConnectionToServer extends AsyncTask<String, Void, String>{
String IPConnection ="http://************";
public String doInBackground(String... IntegerParam) {
try {
URL url = new URL(IPConnection+"TestConnectionToServer");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
return stringBuilder.toString();
}
finally {
urlConnection.disconnect();
}
}
catch(Exception e) {
Log.e("ERROR", e.getMessage(), e);
return e.getMessage();
}
}
Android 9与网络相关的一个变化是使用http而不是https不再容易,请参阅Protecting users with TLS by default in Android P。
您很可能只需切换到https。
如果您希望/必须使用http,则必须更改应用的网络安全配置。
mynetworksecurityconfig.xml
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">insecure.example.com</domain>
</domain-config>
</network-security-config>
Manifest.xml
标记中设置android:networkSecurityConfig
属性,在app的application
中添加配置文件的链接<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mynetworksecurityconfigtest">
<application android:networkSecurityConfig="@xml/mynetworksecurityconfig"
... >
...
</application>
</manifest>
有关更多信息,请参阅Network security configuration上的培训单元。