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客户端:
,来自标准JavaHttpUrlConnection
- 第三方的,比如
- 阿帕奇的
- 使用不使用不推荐的HTTP API的教程,或
- 移植教程以使用Apache重新打包的HttpClient for Android,或
- 忽略弃用警告
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...
}