Android 我可以用什么替换http不推荐的方法?

Android 我可以用什么替换http不推荐的方法?,android,android-studio,androidhttpclient,Android,Android Studio,Androidhttpclient,我遵循了一个教程,我到了一个地步,很多代码都被弃用了 ArrayList<NameValuePair> dataToSend = new ArrayList<>(); dataToSend.add(new BasicNameValuePair("name", user.name)); dataToSend.add(new BasicNameValuePair("age", user.age)); HttpParams httpRequestParams = new Ba

我遵循了一个教程,我到了一个地步,很多代码都被弃用了

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();
}
我发现我可以用替换
NameValuePair

ContentValues values = new ContentValues();
values.put("name", user.name);
values.put("age", user.age + "");
但是我不知道其他的

我发现我可以用替换NameValuePair

不是真的

但是我不知道其他的

Android本身附带的整个HttpClient API已被弃用。解决方案是使用不同的HTTP客户端:

  • HttpUrlConnection
    ,来自标准Java
  • 第三方的,比如
  • 阿帕奇的
关于本教程,请执行以下任一操作:

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

您可以用

替换apache的HttpClient。您应该尝试改型,使用该库而不是执行http请求更简单。它用于简化java和RESTAPI之间的通信

我给你一个文件样本

public interface GitHubService {
   @GET("/users/{user}/repos")
   List<Repo> listRepos(@Path("user") String user);
}
对生成的GitHubService的每次调用都会向远程Web服务器发出HTTP请求

List<Repo> repos = service.listRepos("octocat");
List repos=service.listRepos(“octocat”);

正如Commonware在其回答中所说的那样,整个http客户端软件包已被Android 23.0.0构建工具版本弃用。因此,我们最好使用其他API,如
HttpUrlConnection
或任何第三方库,如
Volley
okHttp
改型

但是如果你仍然想要那些所有的包;您可以将以下依赖项添加到应用程序的module gradle脚本中:

dependencies {

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

}
别忘了在项目gradle脚本中添加
mavenCentral()

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}
加上这些,;只需将项目与gradle同步。您将能够再次导入和使用这些API

更新:

感谢@rekire在评论中提到这一点。在这里,我也在添加这一点,而不是使用上述依赖项,您只需在模块的gradle脚本的android DSL中添加
useLibrary'org.apache.http.legacy'
。添加如下所示:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'
    //rest things...
}

希望这能对某人有所帮助

我没有检查它,但我猜
usebrary'org.apache.http.legacy'
也可以用。@ridoy请尝试我更新的答案。比以前更相关。
allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'
    //rest things...
}