我想在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方法。
当前回答
您可以使用Gson库将java类转换为JSON对象。
为想要发送的变量创建一个pojo类 如上所述
{"name":"myname","age":"20"}
就变成了
class pojo1
{
String name;
String age;
//generate setter and getters
}
一旦在pojo1类中设置了变量,就可以使用下面的代码发送它
String postUrl = "www.site.com";// put in your url
Gson gson = new Gson();
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(postUrl);
StringEntity postingString = new StringEntity(gson.toJson(pojo1));//gson.tojson() converts your pojo to json
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
HttpResponse response = httpClient.execute(post);
这些是进口
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
和GSON
import com.google.gson.Gson;
其他回答
以下是你需要做的:
获取Apache HttpClient,这将使您能够发出所需的请求 用它创建一个HttpPost请求,并添加头应用程序/x-www-form-urlencoded 创建一个StringEntity,并将JSON传递给它 执行调用
代码大致如下(你仍然需要调试它并使它工作):
// @Deprecated HttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params = new StringEntity("details={\"name\":\"xyz\",\"age\":\"20\"} ");
request.addHeader("content-type", "application/x-www-form-urlencoded");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
} catch (Exception ex) {
} finally {
// @Deprecated httpClient.getConnectionManager().shutdown();
}
您可以使用Gson库将java类转换为JSON对象。
为想要发送的变量创建一个pojo类 如上所述
{"name":"myname","age":"20"}
就变成了
class pojo1
{
String name;
String age;
//generate setter and getters
}
一旦在pojo1类中设置了变量,就可以使用下面的代码发送它
String postUrl = "www.site.com";// put in your url
Gson gson = new Gson();
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(postUrl);
StringEntity postingString = new StringEntity(gson.toJson(pojo1));//gson.tojson() converts your pojo to json
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
HttpResponse response = httpClient.execute(post);
这些是进口
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
和GSON
import com.google.gson.Gson;
对于Java 11,你可以使用新的HTTP客户端:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost/api"))
.header("Content-Type", "application/json")
.POST(ofInputStream(() -> getClass().getResourceAsStream(
"/some-data.json")))
.build();
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
你可以使用InputStream, String, File中的发布者。将JSON转换为字符串或IS可以用Jackson完成。
你可以在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));
使用HttpURLConnection可能是最简单的。
http://www.xyzws.com/Javafaq/how-to-use-httpurlconnection-post-data-to-web-server/139
你将使用JSONObject或其他东西来构造JSON,但不是用来处理网络;你需要序列化它,然后将它传递给一个HttpURLConnection到POST。