使用HttpURLConnection传递参数
在API 22中弃用旧的Apache东西,我终于开始更新我的网络资料。使用HttpURLConnection传递参数
使用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的答案。编辑2:我只需要目标Android 4.1 +目前。
我固定它是这样的:
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
下面是参数的东西:
如果你想保持minSdk版本 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();
试试这个:
https://stackoverflow.com/a/29153585/4665516 如果你需要更多的信息,请让我知道。 希望它有帮助!
这似乎很直接。但是我的'php'服务器代码没有设置为处理'JSON'响应(它确实将'JSON'输出回Android,但在这里不相关)。我不能只是开始改变我的服务器代码的工作方式,而不会破坏现有用户。有没有JSON的答案? – KickingLettuce 2015-03-31 18:20:10
我认为这是可能的XML响应.. – 2015-03-31 18:24:48
嗯,我需要使用任何我以前使用的。基本的POST阵列的我猜?我想,我也可以在服务器端进行某种“json”检查。 – KickingLettuce 2015-03-31 18:30:04
,也许它不是使用过时的方法问题。 – 2015-03-31 18:15:21
那么我现在只需要针对Android 4.1+,如果有一种解决方案适合所有人,并且不使用弃用的东西,那就是我想要做的。此外,我是强迫症,我不喜欢通过我的代码告诉我的东西线已被弃用。 – KickingLettuce 2015-03-31 18:17:44
您可以使用类似'@ SuppressLint'或'@TargetApi(22)'的注释来使用更新的库,并使用'@抑制警告“来清除警告。我认为这不是一个错误的决定。 – 2015-03-31 18:25:14