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);
4

2 回答 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,这是一个 HTTP 库,它使 Android 应用程序的网络更容易,最重要的是,更快。

于 2013-12-14T04:23:25.973 回答
8

与 POST 不同,GET 在 url 下发送参数,如下所示:

http://myurl.com?variable1=value&variable2=value2

其中:参数区域从问号开始,因此变量1 是第一个参数,它具有“”值...

请参阅此处了解更多信息。

所以你需要做的只是根据服务器的需要构建一个包含这些参数的 url。

编辑:

在你的情况下:

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

其中:count=5 和 length=5 是参数和“?” 标记是参数定义的开始......我希望这会有所帮助。

于 2013-01-11T14:50:10.780 回答