我在为我的应用程序寻找最好的网络客户端,然后我登陆OkHttp或进行改造,但它们都需要API级别的21+,而我的应用程序的当前minSdkVersion是17,所以我应该将21+提高到API 21,还是应该使用OkHttp 3.12.x分支,如果您有其他解决方案,我想听听您的想法。
请注意,在OkHttp网站上,他们说:
“OkHttp 3.12.x分支支持Android 2.3+ (API级9+)和Java 7+。这些平台缺乏对TLS 1.2的支持,不应该使用。但是由于升级很困难,我们将支持3.12.x分支到2021年12月31日的关键修复。”
。
发布于 2020-06-15 06:56:56
如果你决定支持超过21岁的客户,你应该做几件事
在构建文件中
implementation 'org.conscrypt:conscrypt-android:2.4.0'在你的请求之前激活氪星
import org.conscrypt.Conscrypt
Security.insertProviderAt(Conscrypt.newProvider(), 1)
val client = OkHttpClient.Builder().build()
val request = Request.Builder().url("https://status.datadoghq.com/").build()
client.newCall(request).execute().use { response ->
println(response.code())
}这将允许您的老客户端支持TLSv1.2。
您可能也需要降低Retrofit的级别,但我不确定正确的建议是什么。也许是2.6.4?
发布于 2020-06-14 18:46:19
我建议增加minSdkVersion,因为改进依赖于特殊的库。
虽然如果不想增加api,可以使用异步任务调用服务。
示例
package principal.example;
import android.os.AsyncTask;
import android.util.Log;
import java.io.IOException;
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Post extends AsyncTask<String, Void, String> {
private InputStreamReader inputStreamReader;
private BufferedReader bufferedReader;
@Override
protected String doInBackground(String... params){
try {
URL obj = new URL(params[0]);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", " ");
con.connect();
inputStreamReader=new InputStreamReader(con.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader);
return bufferedReader.readLine();
}catch(Exception e){
Log.d("Url doInBackground", e.toString());
return null;
} finally {
try {
closeConnection();
} catch(Exception e){
}
}
}
private void closeConnection() {
try {
if(bufferedReader!=null){
bufferedReader.close();
}
if(inputStreamReader!=null){
inputStreamReader.close();
}
}catch(IOException ex){
Log.d("Url disconnect", ex.toString());
}
}
@Override
protected void onPostExecute(String result){
super.onPostExecute(result);
}
}https://stackoverflow.com/questions/62376404
复制相似问题