2024-09-01
Android/Java
00

最近开发一个自己玩的小东西,发现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>
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!