繁体   English   中英

在API级别23中删除了org.apache.http包。有什么替代方案?

[英]org.apache.http packages removed in API level 23. What is the alternative?

在更新到最新的android API级别23(Marshmallow)之后,通过build.gradle添加以下更改后,所有org.apache.http类都无效。

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.myapp.package"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 2
        versionName "1.1"
    }
}

在这里查看了“Android API差异报告”。 它说所有的org.apache.http类都被删除了。 有人可以建议什么是替代方案吗?

这是我的代码:

try {

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(address);

            httpPost.setEntity(new StringEntity("{\"longUrl\":\""+longUrl+"\"}"));
            httpPost.setHeader("Content-Type", "application/json");
            HttpResponse httpResponse = httpClient.execute(httpPost);

            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

请参阅Android开发者的行为更改 ,其中包含以下内容:

Android 6.0版本删除了对Apache HTTP客户端的支持。 如果您的应用使用此客户端并定位到Android 2.3(API级别9)或更高版本,请改用HttpURLConnection类。 此API更高效,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗。 要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时依赖项:

 android { useLibrary 'org.apache.http.legacy' } 

请参考这个 Android Developer网站中提到了替代class

Android 5.1中已弃用org.apache.http类和android.net.http.AndroidHttpClient类。 这些类不再被维护,您应该尽快使用这些API将任何应用程序代码迁移到URLConnection类。

您可以手动添加Apache HttpClient的最新版本:

implementation 'org.apache.httpcomponents:httpclient:4.5.5'

同样,您可以像OkHttp一样使用另一个HTTP库。 您还可以使用更高级别的库,例如Retrofit。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM