2012-02-20 53 views
11

我想在HttpPost對象中設置一些Http參數。在Apache的httpclient上添加參數到HttpPost

HttpPost post=new HttpPost(url); 
HttpParams params=new BasicHttpParams(); 
params.setParameter("param", "value"); 
post.setParams(params); 
HttpResponse response = client.execute(post); 

它看起來像參數沒有設置。你知道爲什麼會發生這種情況嗎?

謝謝

+11

'HttpPost get'!它意味着是一個POST還是一個GET? – artbristol 2012-02-20 14:24:54

+0

你在說明和標題中說**'HttpGet' **,然後你的代碼說**'HttpPost' **。我剛剛編輯它是正確的 – Kayvar 2016-10-19 22:03:29

回答

7
HttpPost httpPost = new HttpPost(url); 
List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
nvps.add(new BasicNameValuePair("param", "value")); 
httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 
httpClient.execute(httpPost); 
+4

這個問題是要求http獲取請求。你不能爲一個http獲取請求設置實體 – 2016-02-02 17:08:16

+0

應該使用LinkedList而不是ArrayList – Benedictus 2016-02-04 19:03:16

+0

@Benedictus,爲什麼? – Dacav 2016-08-31 08:27:46

26

對於那些誰希望使用HTTPGET找到答案,這裏是一個(從https://stackoverflow.com/a/4660576/330867):

StringBuilder requestUrl = new StringBuilder("your_url"); 

String querystring = URLEncodedUtils.format(params, "utf-8"); 
requestUrl.append("?"); 
requestUrl.append(querystring); 

HttpClient httpclient = new DefaultHttpClient(); 
HttpGet get = new HttpGet(requestUrl.toString()); 

注意:這不會考慮採取your_url的狀態:如果已經有一些參數,如果它已經包含一個「?」等。我假設你知道如何編碼/搜索,並將適應你的情況。

+1

DefaultHttpClient已棄用。 – Dacav 2016-08-29 08:40:11

相關問題