使用 HttpURLConnection 传递参数
Passing Parameters with HttpURLConnection
在 API 22 中弃用了旧的 Apache 内容,我终于开始更新我的网络内容了。
使用 openConnection()
似乎很简单。但是,我还没有看到任何用它发送参数的好例子。
我将如何更新此代码?
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("user_id",String.valueOf(userId)));
httpPost.setEntity(new UrlEncodedFormEntity(param));
现在 NameValuePair
和 BasicNameValuePair
也已弃用。
编辑:我的服务器端 php
代码不需要 JSON 参数,而且由于现有用户,我不能突然切换 - 所以非 JSON 推荐回答。
EDIT2:我现在只需要目标 Android 4.1+。
我是这样修复的:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
这是参数内容:
String charset = "UTF-8";
String s = "unit_type=" + URLEncoder.encode(MainActivity.distance_units, charset);
s += "&long=" + URLEncoder.encode(String.valueOf(MainActivity.mLongitude), charset);
s += "&lat=" + URLEncoder.encode(String.valueOf(MainActivity.mLatitude), charset);
s += "&user_id=" + URLEncoder.encode(String.valueOf(MyndQuest.userId), charset);
conn.setFixedLengthStreamingMode(s.getBytes().length);
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(s);
out.close();
在 API 22 中弃用了旧的 Apache 内容,我终于开始更新我的网络内容了。
使用 openConnection()
似乎很简单。但是,我还没有看到任何用它发送参数的好例子。
我将如何更新此代码?
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("user_id",String.valueOf(userId)));
httpPost.setEntity(new UrlEncodedFormEntity(param));
现在 NameValuePair
和 BasicNameValuePair
也已弃用。
编辑:我的服务器端 php
代码不需要 JSON 参数,而且由于现有用户,我不能突然切换 - 所以非 JSON 推荐回答。
EDIT2:我现在只需要目标 Android 4.1+。
我是这样修复的:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
这是参数内容:
String charset = "UTF-8";
String s = "unit_type=" + URLEncoder.encode(MainActivity.distance_units, charset);
s += "&long=" + URLEncoder.encode(String.valueOf(MainActivity.mLongitude), charset);
s += "&lat=" + URLEncoder.encode(String.valueOf(MainActivity.mLatitude), charset);
s += "&user_id=" + URLEncoder.encode(String.valueOf(MyndQuest.userId), charset);
conn.setFixedLengthStreamingMode(s.getBytes().length);
PrintWriter out = new PrintWriter(conn.getOutputStream());
out.print(s);
out.close();