安卓HTTP GET请求参数

3
我正在使用Apache Http库,并需要知道如何向HTTP GET请求添加参数。我已经查看了如何在Android中向HTTP GET请求添加参数?,但是那个问题的被接受的答案是为HTTP POST添加参数。这是我的代码,但它不起作用。
HttpGet get = new HttpGet("https://server.com/stuff");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("count", "5"));
HttpParams p = get.getParams();
p.setParameter("length", "5");
get.setParams(p);

请解释一下它为什么不工作 - 是无法编译,崩溃还是没有返回预期的结果? - iagreen
添加一个 GET 参数很简单。例如,您可以使用 new HttpGet("https://server.com/stuff?id=" + 123); - Alpay
1
使用“http://server.com/stuff” + URLEncodedUtils.format(nameValuePairs,“utf-8”); HttpParams用于HTTP参数,这些参数与协议相关。 - njzk2
当我使用上述方法时,服务器似乎根本没有接收到参数。我将尝试njzk2的答案。 - mpatten
2个回答

14
String url = "https://server.com/stuff"
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("count", "5"));
HttpClient httpClient = new DefaultHttpClient();
String paramsString = URLEncodedUtils.format(nameValuePairs, "UTF-8");
HttpGet httpGet = new HttpGet(url + "?" + paramsString);
HttpResponse response = httpClient.execute(httpGet);

编辑:自Android SDK v22版本起,类型NameValuePair已被弃用。我建议使用Volley,这是一个可以使Android应用程序的网络操作更轻松且更快速的HTTP库。


8
与POST不同,GET将参数作为URL发送,如下所示:
http://myurl.com?variable1=value&variable2=value2

在哪里:参数区从问号开始,variable1是第一个参数,它的值为"value"...

查看这里以获取更多信息。

所以你需要做的就是构建一个URL,其中包含服务器需要的这些参数。

编辑:

在您的情况下:

HttpGet get = new HttpGet("https://server.com/stuff?count=5&length=5");
...

其中:count=5和length=5是参数,"?"标记是参数定义的开始...

希望这可以帮到你。


这个可行,只是我希望有一种比构建字符串更简单的方法。 - mpatten
你可以设计一个辅助方法来完成这个任务。使用值和对对象的列表,你可以生成URL,并按照你的需求进行编码。 - Cata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接