我正在学习一个教程,并且我已经批准了很多代码。
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();
}
和另一个返回结果的POST方法
HttpResponse httpResponse = client.execute(post);
HttpEntity entity = httpResponse.getEntity();
String result = EntityUtils.toString(entity);
JSONObject jObject = new JSONObject(result);
我发现我可以用
替换NameValuePair
ContentValues values = new ContentValues();
values.put("name", user.name);
values.put("age", user.age + "");
但我不知道其他人。
答案 0 :(得分:8)
我发现我可以用
替换NameValuePair
不是。
但我不了解其他人
不推荐使用Android自带的整个HttpClient API。解决方案是使用不同的HTTP客户端:
HttpUrlConnection
,来自标准Java 关于本教程,要么:
答案 1 :(得分: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'
}
并且不要忘记在项目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...
}
希望这会对某人有所帮助。
答案 2 :(得分:1)
您可以将apache的HttpClient替换为HttpURLConnection