最近开发一个自己玩的小东西,发现android 9 不支持http了,把org.apache.http.legacy.jar移除了,只支持https,很烦人。
有以下三种解决方案
1、APP改用https请求,网站也需要支持ssl
2、targetSdkVersion 降到27以下
3、使用OKHTTP库
这里说说第三种办法:
OKHTTP官网:
https://square.github.io/okhttp/
https://github.com/square/okhttp/
需要2个jar包:
下载链接:
https://download.csdn.net/download/x1131230123/11820098
android stdoi新建空工程后,添加到libs
添加依赖jar
访问百度http
MainActivity.java
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.io.IOException; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Thread thread = new Thread() { @Override public void run() { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .get() .url("http://www.baidu.com") .build(); Call call = client.newCall(request); try { Response response = call.execute(); Log.i("http-", response.toString()); assert response.body() != null; String body = response.body().string(); Log.i("http-", body); } catch (IOException e) { e.printStackTrace(); } } }; thread.start(); } }
添加网络权限,并给一个android
设置manifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:networkSecurityConfig="@xml/network_security_config" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.google.android.actions" android:resource="@xml/network_security_config" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
res里新建action xml,然后建立
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!