Java PostMethod:如何向给定地址发出请求?
我想创建一个对给定地址的POST请求,例如 对于POST请求,我创建了一个通用方法:Java PostMethod:如何向给定地址发出请求?,java,apache-commons-httpclient,Java,Apache Commons Httpclient,我想创建一个对给定地址的POST请求,例如 对于POST请求,我创建了一个通用方法: private String postMethod(String url, HashMap<String, String> headers, String encodedAuthorizationString) throws HttpException, IOException { HttpClient client = new HttpClient(); PostMethod p
private String postMethod(String url, HashMap<String, String> headers, String encodedAuthorizationString) throws HttpException, IOException {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
post.setRequestHeader("Authorization", encodedAuthorizationString);
if(headers != null && !headers.isEmpty()){
for(Entry<String, String> entry : headers.entrySet()){
post.setRequestHeader(new Header(entry.getKey(), entry.getValue()));
}
}
client.executeMethod(post);
String responseFromPost = post.getResponseBodyAsString();
post.releaseConnection();
return responseFromPost;
}
private String postMethod(字符串url、HashMap头、字符串encodedAuthorizationString)抛出HttpException、IOException{
HttpClient=新的HttpClient();
PostMethod post=新的PostMethod(url);
post.setRequestHeader(“授权”,encodedAuthorizationString);
if(headers!=null&&!headers.isEmpty()){
for(条目:headers.entrySet()){
post.setRequestHeader(新的头(entry.getKey(),entry.getValue());
}
}
客户执行方法(post);
字符串responseFromPost=post.getResponseBodyAsString();
post.releaseConnection();
返回响应主机;
}
其中标头表示成对(键、值),例如(“产品[标题],“标题测试”)。我试图通过调用
postMethod(“”,标题,“xxx”);
其中,头包括对
(“产品[标题],“标题测试”)
(“产品[内容],“测试内容”)
(产品[价格],“12.3”)
(“标签”、“aaa、bbb”)
但是服务器返回了一条错误消息
有人知道如何解析地址吗
为了配合上述方法使用它?哪个部分是url?参数设置是否正确
谢谢。您似乎混淆了URL查询参数,例如product[price]=12.3和HTTP请求头。使用setRequestHeader()旨在设置HTTP请求头,这些头是与任何HTTP请求关联的元数据 为了设置查询参数,您应该将它们附加到url中的“?”和URLCoded后面,如示例url中所示。我发现了一个问题:
private String postMethod(String url, HashMap<String, String> headers, String encodedAuthorizationString) throws HttpException, IOException {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
post.setRequestHeader("Authorization", encodedAuthorizationString);
if(headers != null && !headers.isEmpty()){
for(Entry<String, String> entry : headers.entrySet()){
//post.setRequestHeader(new Header(entry.getKey(), entry.getValue()));
//in the old code parameters were set as headers (the line above is replaced with the line below)
post.addParameter(new Header(entry.getKey(), entry.getValue()));
}
}
client.executeMethod(post);
String responseFromPost = post.getResponseBodyAsString();
post.releaseConnection();
return responseFromPost;
}
("product[content]", "TestContent"),
(product[price], "12.3"),
("tags", "aaa,bbb")