我想发送带有许多字符串参数的Post请求以及一个HashMap对象。怎么做?
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 :(得分:2)
尝试将您的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`
答案 1 :(得分:0)
如果我理解正确,下面的更改将对您有所帮助;
PostMethod post=new PostMethod(url);
for (Entry<String, String> entry : map.entrySet()) {
post.setParameter(entry.getKey(), entry.getValue());
}
答案 2 :(得分:0)
您可以将所有字符串放在HashMap中,然后可以从中创建JSON对象。您可以将此JSON添加到帖子post.setEntity(se);
,其中se是包含您的JSON的StringEntity,例如StringEntity se = new StringEntity(json.toString());
。
现在,您可以将'post'传递给executeMethod。
答案 3 :(得分:-1)
您可以将hashMap作为参数传递给方法,然后在使用PostMethod时预先传递hashMap。
最诚挚的问候, 詹姆斯