
[英]How to send simple http post request with post parameters in java
[英]How can we do HTTP POST request by adding query parameters in Java?
在这里,我试图通过使用Java添加查询参数来将一些数据发布到Rest API,但得到的响应表明请求不正确。
package com.anergroup;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.DefaultHttpClient;
public class RestRequestURL {
public void TestRestRequest(){
HttpClient httpclient = new DefaultHttpClient();
URIBuilder builder = new URIBuilder();
builder.setScheme("http").setHost("hostname")
.setPort(8080)
.setPath("/oauth/check_token")
.setParameter("token", "7e9e5b81-1009-49cb-b71f-f418c6b1db3f");
URI uri;
try {
uri = builder.build();
System.out.println("URL Token1 : "+uri);
HttpPost httppost = new HttpPost(uri);
HttpResponse response = httpclient.execute(httppost);
System.out.println("URL Token : "+response);
} catch (URISyntaxException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
响应是:
HTTP/1.1 400 Bad Request [Server: Apache-Coyote/1.1, Access-Control-Allow-Origin: *, X-Content-Type-Options: nosniff, X-XSS-Protection: 1; mode=block, Cache-Control: no-cache, no-store, max-age=0, must-revalidate, Pragma: no-cache, Expires: 0, X-Frame-Options: DENY, X-Application-Context: api-gateway-uaa:dev:8080, Cache-Control: no-store, Pragma: no-cache, Content-Type: application/json;charset=UTF-8, Transfer-Encoding: chunked, Date: Wed, 25 May 2016 15:08:27 GMT, Connection: close]
看来您实际上需要将token属性添加到帖子的有效负载中,而不是作为URL参数。 那就是-d选项在Curl上所做的。
简单的方法是做这样的事情
List<NameValuePair> data = new new ArrayList<NameValuePair>();
data.add(new BasicNameValuePair("token","7e9e5b81-1009-49cb-b71f-f418c6b1db3f"));
httppost.setEntity(new UrlEncodedFormEnity(data));
[编辑]看起来您可能还需要设置content-type标头。 Curl自动添加“内容类型应用程序/ x-www-form-urlencoded”,因此您也需要将其添加到帖子中。
httppost.addHeader(new BasicHeader("Content-Type","application/x-www-form-urlencoded"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.