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

tec*_*shi 8 java apache api android http

在更新到最新的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"
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里查看了"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();
        }
Run Code Online (Sandbox Code Playgroud)

Mid*_*fko 15

请参阅Android开发者的行为更改,其中说明:

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

android {
    useLibrary 'org.apache.http.legacy' 
} 
Run Code Online (Sandbox Code Playgroud)

  • @techierishi:确保您使用的是Gradle for Android插件的1.3.0版. (6认同)