我是Android开发的新手,我有一些弃用的问题。在Android Studio中,它声明不推荐使用NameValuePair
和HttpParams
。
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("fname", user.fname));
dataToSend.add(new BasicNameValuePair("lname", user.lname));
dataToSend.add(new BasicNameValuePair("email", user.email));
dataToSend.add(new BasicNameValuePair("password", user.password));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADDRESS + "register");
在搜索答案时,我被发送使用openconnection()
,但我不知道这是如何适用于上面的代码。
您是否尝试使用ContentValues?
从这段代码我不确定它是否会对你有所帮助。
ContentValues values=new ContentValues();
values.put("fname",user.fname);
values.put("lname", user.lname);
values.put("email",user.email);
values.put("password",user.password);
您必须在build.gradle文件中添加HttpClient的依赖项:
android {
compileSdkVersion 23
buildToolsVersion "22.0.1"
useLibrary 'org.apache.http.legacy'
...
}
您可以根据自己的喜好使用contentvalues或hashmap。
我使用了内容值
ContentValues contentValues = new ContentValues();
contentValues.put("key1","value1");
contentValues.put("key2","value2");
如果您发布的数据是表单数据,那么您可以在此处将其转换为表单数据
public String getFormData(ContentValues contentValues) throws UnsupportedEncodingException {
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Map.Entry<String, Object> entry : contentValues.valueSet()) {
if (first)
first = false;
else
sb.append("&");
sb.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
sb.append("=");
sb.append(URLEncoder.encode(entry.getValue().toString(), "UTF-8"));
}
return sb.toString();
}
请为NameValuePair
和Httpclient
添加以下依赖项以使其工作。
dependencies{
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}