2013-01-11 62 views
3

我正在使用apache http库,需要知道如何将参数添加到HTTP GET请求中。我已经看过How to add parameters to a HTTP GET request in Android?,但接受的答案是将参数添加到HTTP POST。这是我的代码到目前为止,但它不工作。Android HTTP GET参数

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); 
+0

请解释它是如何不工作的 - 它不会编译,崩溃或只是不返回预期的结果吗? – iagreen

+0

添加get参数很简单。你可以使它成为'新的HttpGet(“https://server.com/stuff?id=”+ 123);'例如 – Alpay

+1

使用“http://server.com/stuff”+ URLEncodedUtils.format(nameValuePairs, “UTF-8”); HttpParams是用于HTTP参数的,它们是协议相关的。 – njzk2

回答

8

不像POST,GET发送URL这样下的参数:

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

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

有关更多信息,请参见here

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

编辑:

你的情况:

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

其中: “?” 数= 5,长度= 5的参数和标志是参数定义的开始... 我希望有所帮助。

+0

这工作,我只是希望有一个比建立一个字符串更简单的方法。 – mpatten

+0

那么你可以设计一个辅助方法来做到这一点..并使用值和对对象的列表,你可以生成的网址...并且还可以根据你的需要进行编码... – Cata

+0

你是对的。我应该这样做。 – mpatten

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应用程序的联网更加简单,最重要的是,更快。

+2

这是正确的答案 –