2015-04-17 58 views
2

我想發送包含許多字符串參數和一個HashMap對象的Post請求。這個怎麼做?如何使用帶有HashMap的HTTPClient作爲一個參數發送POST請求

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.methods.PostMethod; 
public class PostRequest { 

    public static void main(String args[]) throws Exception{ 


     String url="http://url";  
     PostMethod post=new PostMethod(url); 
     post.setParameter("param1","abc"); 
     post.setParameter("param2","1"); 
     HttpClient httpclient = new HttpClient(); 
     int a = httpclient.executeMethod(post); 
     System.out.println("I::::::::::::::::" + a);  
     String postResp = post.getResponseBodyAsString(); 
     System.out.println("response::::" + postResp);  
    } 
} 

在上面的代碼中,我也想在請求中發送HashMap對象。

HashMap hm = new HashMap(); 
hm.put("key","value"); 
//Set this param in URL. 
post.setParameter("paramname",hm); 

請幫忙。

+0

你想重新設計你的URL並傳遞給HttpClient? –

回答

-1

您可以將hashMap作爲參數傳遞給方法,然後在使用PostMethod的同時對hashMap進行foreach。

最好的問候, 詹姆斯

0

如果我理解你正確地下面的變化將幫助你;

PostMethod post=new PostMethod(url); 
for (Entry<String, String> entry : map.entrySet()) { 
    post.setParameter(entry.getKey(), entry.getValue()); 
} 
+0

不,我只是想這樣設置。 HashMap hm = new HashMap(); hm.put( 「鍵」, 「值」);在URL中設置此參數。 post.setParameter( 「PARAMNAME」,HM);您在API文檔中看到的 – Roshan

+0

沒有這樣的方法。 https://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/methods/PostMethod.html –

0

嘗試將你的hashmap轉換爲JSON字符串並放入post參數中。之後,您可以從該JSON字符串重新創建hashmap。

Map<String, String> myMap = new HashMap<String, String>(); 
    myMap.put("MyKey", "MyValue"); 
    String jsonMap = new Gson().toJson(myMap); 
    System.out.println(jsonMap); 
    /* 
    * output :{"MyKey":"MyValue"} 
    */ 

    Map<String, String> myOriginalMap = new HashMap<String, String>(); 
    myOriginalMap = new Gson().fromJson(jsonMap, HashMap.class); 
    System.out.println(myOriginalMap); 
    /* 
    * output : {MyKey=MyValue}`enter code here` 
    */`enter code here` 
0

你可以把所有的字符串放在一個HashMap中,然後你可以從中創建一個JSON對象。之後,您可以將此JSON添加到您的帖子中作爲post.setEntity(se);,其中se是包含您的JSON的StringEntity,如StringEntity se = new StringEntity(json.toString());

現在,您可以將'post'傳遞給executeMethod。

相關問題