我想在Java中使用JSON制作一个简单的HTTP POST。
假设URL是www.site.com
它接收值{"name":"myname","age":"20"},例如标记为" details "。
我将如何着手创建POST的语法?
我似乎也找不到JSON Javadocs中的POST方法。
我想在Java中使用JSON制作一个简单的HTTP POST。
假设URL是www.site.com
它接收值{"name":"myname","age":"20"},例如标记为" details "。
我将如何着手创建POST的语法?
我似乎也找不到JSON Javadocs中的POST方法。
当前回答
你可以在Apache HTTP中使用以下代码:
String payload = "{\"name\": \"myname\", \"age\": \"20\"}";
post.setEntity(new StringEntity(payload, ContentType.APPLICATION_JSON));
response = client.execute(request);
此外,您还可以创建一个json对象,并像这样在对象中放入字段
HttpPost post = new HttpPost(URL);
JSONObject payload = new JSONObject();
payload.put("name", "myName");
payload.put("age", "20");
post.setEntity(new StringEntity(payload.toString(), ContentType.APPLICATION_JSON));
其他回答
Java 11标准的HTTP客户端API,实现了HTTP/2和Web Socket,可以在java.net.HTTP找到。*:
String payload = "{\"name\": \"myname\", \"age\": \"20\"}";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("www.site.com"))
.header("content-type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
我推荐在apache http api上构建http-request。
HttpRequest<String> httpRequest = HttpRequestBuilder.createPost(yourUri, String.class)
.responseDeserializer(ResponseDeserializer.ignorableDeserializer()).build();
public void send(){
ResponseHandler<String> responseHandler = httpRequest.execute("details", yourJsonData);
int statusCode = responseHandler.getStatusCode();
String responseContent = responseHandler.orElse(null); // returns Content from response. If content isn't present returns null.
}
如果你想发送JSON作为请求体,你可以:
ResponseHandler<String> responseHandler = httpRequest.executeWithBody(yourJsonData);
我强烈建议在使用前阅读文档。
@momo对Apache HttpClient的回答,4.3.1版本或更高版本。我使用JSON- java构建我的JSON对象:
JSONObject json = new JSONObject();
json.put("someKey", "someValue");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params = new StringEntity(json.toString());
request.addHeader("content-type", "application/json");
request.setEntity(params);
httpClient.execute(request);
// handle response here...
} catch (Exception ex) {
// handle exception here
} finally {
httpClient.close();
}
使用HttpURLConnection可能是最简单的。
http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
你将使用JSONObject或其他东西来构造JSON,但不是用来处理网络;你需要序列化它,然后将它传递给一个HttpURLConnection到POST。
你可以在Apache HTTP中使用以下代码:
String payload = "{\"name\": \"myname\", \"age\": \"20\"}";
post.setEntity(new StringEntity(payload, ContentType.APPLICATION_JSON));
response = client.execute(request);
此外,您还可以创建一个json对象,并像这样在对象中放入字段
HttpPost post = new HttpPost(URL);
JSONObject payload = new JSONObject();
payload.put("name", "myName");
payload.put("age", "20");
post.setEntity(new StringEntity(payload.toString(), ContentType.APPLICATION_JSON));