【问题标题】:HTTP Json requests in Java?Java中的HTTP Json请求?
【发布时间】:2011-05-27 08:01:42
【问题描述】:

如何在 Java 中发出 HTTP Json 请求?有图书馆吗?在“HTTP Json 请求”下,我的意思是使用 Json 对象作为数据进行 POST,并将结果作为 Json 接收。

【问题讨论】:

标签: java json http post httpwebrequest


【解决方案1】:

除了做 HTTP 请求本身——这甚至可以通过使用 java.net.URL.openConnection 来完成——你只需要一个 JSON 库。为了方便绑定到/从 POJO,我推荐Jackson

所以,类似:

// First open URL connection (using JDK; similar with other libs)
URL url = new URL("http://somesite.com/requestEndPoint");
URLConnection connection = url.openConnection();
connection.setDoInput(true);  
connection.setDoOutput(true);  
// and other configuration if you want, timeouts etc
// then send JSON request
RequestObject request = ...; // POJO with getters or public fields
ObjectMapper mapper = new ObjectMapper(); // from org.codeahaus.jackson.map
mapper.writeValue(connection.getOutputStream(), request);
// and read response
ResponseObject response = mapper.readValue(connection.getInputStream(), ResponseObject.class);

(显然有更好的错误检查等)。

使用现有的 rest-client 库有更好的方法来做到这一点;但在底层,这只是 HTTP 连接处理以及与 JSON 的数据绑定问题。

【讨论】:

  • 我试过了,但它似乎不起作用....你如何从目标 Servlet 读取 Json?
  • mapper.readValue() 做到了——通过 InputStream 读取 JSON,将其绑定到日期对象。它怎么不工作?
  • 在这种情况下 URL 连接是通过 JDK 进行的,它使用同步读取,因此它与 JSON lib 无关。如果你真的需要异步(许多开发人员认为他们需要——大多数不需要),请查看 async-http-client,它非常简单。
【解决方案2】:

【讨论】:

  • 请不要只发布链接,例如 JSON 和 Java 页面不再存在。始终复制 OP 要求的信息,并仅提供链接作为来源
  • 我在 10 年前就回答了这个问题,这才是标准
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 2020-11-23
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多