有什么可以替换http弃用的方法?

Bog*_*iel 6 android androidhttpclient android-studio

我正在按照教程进行操作,并且我已经批准了很多代码.

ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("name", user.name));
dataToSend.add(new BasicNameValuePair("age", user.age));

HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParamas.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParamas.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);

HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");

try{
    post.setEntity(new UrlEncodedFormEntity(dataToSend));
    client.execute(post);
}catch (Exception e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

和另一个返回结果的POST方法

    HttpResponse httpResponse = client.execute(post);

    HttpEntity entity = httpResponse.getEntity();
    String result = EntityUtils.toString(entity);
    JSONObject jObject = new JSONObject(result);
Run Code Online (Sandbox Code Playgroud)

我发现,我可以代替NameValuePair用

ContentValues values = new ContentValues();
values.put("name", user.name);
values.put("age", user.age + "");
Run Code Online (Sandbox Code Playgroud)

但我不知道其他人.

Com*_*are 8

我发现我可以用Name替换NameValuePair

并不是的.

但我不知道其他人

不推荐使用Android本身附带的整个HttpClient API.解决方案是使用不同的HTTP客户端:

关于本教程,要么:

  • 使用不使用已弃用的HTTP API的教程,或
  • 移植教程以使用Apache的重新打包的HttpClient for Android,或
  • 忽略弃用警告


The*_*uto 8

正如CommonsWare在他的回答中所说,整个http客户端软件包已经被Android 23.0.0构建工具版本所弃用.所以我们应该更好地使用其他类似API HttpUrlConnection或任何第三方库,如Volley或okHttp或retrofit.

但如果你仍然想要那些包裹; 您可以在应用程序的模块gradle脚本中添加以下依赖项:

dependencies {

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

}
Run Code Online (Sandbox Code Playgroud)

并且不要忘记添加mavenCentral()项目gradle脚本:

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

添加这些之后; 只需将项目与gradle同步即可.并且您将能够再次导入和使用这些API.

更新:

谢谢@rekire在评论中提到这一点.在这里我也添加了,而不是使用上面提到的依赖,你可以添加useLibrary 'org.apache.http.legacy'你的android DSL的模块的gradle脚本.添加如下:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'
    //rest things...
}
Run Code Online (Sandbox Code Playgroud)

希望这会对某人有所帮助.