当前位置: 首页 > 面试题库 >

Java中的HTTP Json请求?

谢清野
2023-03-14
问题内容

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


问题答案:

除了本身进行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进行数据绑定/从JSON进行数据绑定的问题。



 类似资料:
  • 问题内容: 我需要将POST请求发送到包含gzip压缩请求参数的Web服务器。我使用的是Apache HttpClient,我已经读到它支持开箱即用的Gzip,但是我找不到任何有关如何做我需要的示例。如果有人可以发布一些示例,我将不胜感激。 问题答案: 您需要先将其转换为gzip 或(临时)。我们假设它不是一个很大的值,所以对于可用的JVM内存足够安全: 然后,可以使用HttpClient将其作为

  • 我正试图通过新的Java11HttpClient取消http请求。 这是我的测试代码: 我预计,该请求任务将在 行调用后立即被取消。因此,控制台中最后打印的行应该是 但是,当我运行这段代码时,我看到类似这样的内容: 这意味着,在我取消请求后,请求任务仍在运行…所以,这是取消请求的正确方法吗? UPD 取消请求的正确方法是(正如daniel所建议的,UPD2:在方法调用中避免NPE):

  • 我有一个数组 String[]strArray={牛奶,面包,鸡蛋}; 通常我们可以在一个循环中显示strArray[i]的值。。。但是,我从请求参数的值动态获取数组“StrArray”的名称 request.get参数("arrayName"); 请其中一位专家建议如何根据请求构造arrayname并使用它显示数组的值。

  • 问题内容: 我有一个向我的Java Servlet发送POST请求的javascript库,但是在该方法中,我似乎无法获取请求有效内容。在chrome Developer Tools中,所有内容都位于标头标签的“请求有效负载”部分中,并且内容在那里,而且我知道doPost方法正在接收POST,但它只是空白。 对于 对象,我可以通过什么方式在请求有效负载中获取数据? 这样做 两者最终都没有数据 问题

  • 我正在创建一个数据下载程序,自从使用httpClient以来,它一直给我带来问题 此代码将所需的所有变量附加到URL: } 每当我调用openSession时,它都会以一种简单的方式打印出标题(这正是我需要它做的)。。。 这打印了一个单行,但当我提出另一个打印长行的请求时,它总是带来这个错误: 这是第二个出现错误的请求: 我在currencyPairsRequest()中是否做错了什么?谢谢你花时