- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我收到意外错误 java.io.IOException: Stream closed
错误从这一行开始
public void createPo(String username, PurchaseOrderDto po, List<PoItemDto> items) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("poDto", po);
params.put("items", items);
rc.post(String.format("/po?username=%s", username), params);
}
rc
是从另一台服务器调用 api 的其余客户端。这是它的post函数的代码
protected void post(String path, Object object) {
restTemplate.postForObject((url + path), object, Void.class);
}
下面是处理上述请求的api PoController.java
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/po", method = RequestMethod.POST)
public void createPo(@RequestParam("username") String buyerId, @RequestBody PurchaseOrderDto poDto, @RequestBody List<PoItemDto> items) {
poService.createPo(buyerId, poDto, items);
}
来自处理请求的 tomcat 服务器的日志:
[http-bio-9080-exec-6] ERROR ib.pms.controller.PoController - Stream closed java.io.IOException: Stream closed
at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:301)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:106)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at java.io.PushbackInputStream.read(PushbackInputStream.java:139)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:168)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:105)
我无法理解这一点。有没有更简洁的方法将参数传递给 restApi?
最佳答案
你有两个 @RequestBody
, 这是不可能的,你应该有一个对象 Foo
(实现可序列化)包含 PurchaseOrderDto po, List<PoItemDto> items
然后传递 Foo
在你的restTemplate.postForObject
.
因此,您的 Controller 必须更改为:
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/po", method = RequestMethod.POST)
public void createPo(@RequestParam("username") String buyerId, @RequestBody Foo foo) {
poService.createPo(buyerId, foo.getDoDto(), foo.getItems());
}
我不确定它是否会解决您的问题,但至少减少了一个问题
如果你想发送多个对象,你仍然可以使用一个列表:@RequestBody List<Foo> foos
关于java - 流关闭异常是 RestTemplate Java。如何将多个对象传递给 Java RestClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33016836/
我目前正在与 Personio 集成以获取员工数据。 下面的解决方案不是等待响应,而是在代码中注释的地方突然跳出第二个方法: using Personio.Client.Configuration;
我想知道通过 CDI 注入(inject) RestClient 时 quarkus 的行为是什么。 在下面的例子中它会自动关闭客户端吗? @Produces(APPLICATION_JSON) @C
ASP.Net HttpClient 是一次性的,很多文章都说由于性能原因应该使用单例模式来使用它。但是当我看到 RestClient 时,它无法被处置,并且在 Recommended-Usage 中
我可以从此处的说明中记录如下所示的简单请求 Logging RestClient in a Rails app 它记录请求,但不记录调用的响应。 有没有告诉 RestClient 也记录响应? 最佳答
我正在使用JSON对象使用Spring MVC。当我尝试从RESTClient发送JSON对象时, HTTP Status 400 - The request sent by the client w
我想在 ruby 中安装 restclient。我收到这些消息: Building native extensions. This could take a while... ERROR: E
我有一个条件,我需要将参数作为散列数组传递,如下所示: 以下是 API 调用的 Rack::Test post 方法。 post "#{url}.json", :api_key => applicat
我的请求看起来像这样,但是当我尝试运行此代码时,出现此错误: @Grab(group='org.codehaus.groovy.modules.httpbuilder',module='http-bu
我无法导入 RESTClient在我的 grails 项目中。消息是: Groovy:unable to resolve class groovyx.net.http.RESTClient 在 Bui
admin-on-rest允许通过编写自定义 rest 客户端来使用任何 JSON 响应。文档中的示例用于使用来自 json-server 的 JSON project这很简单。 我想知道消费它有多容
我正在使用 RestSharp.RestClient (105.2.4-rc4-24214-01) 开发 .net core 应用程序。我设置了 RestClient.Timeout=1 或 Rest
我正在尝试使用 Terremark 企业云中的 REST Web 服务之一。这是我所做的:1)获取xsd并生成jaxb工件2) 发送 Rest 调用并让 Restclient 填充 Organizat
我收到一个 NullpointerException 但我什至不明白怎么可能。我只是从其他类复制粘贴了 RestTemplate restTemplate = this.restClient.getR
我正在通过 selenium IDE 测试注册流程。我正在使用 REST 客户端获取数据并从获得的结果中提取特定信息(在我的代码 ID 中)。当我删除(对于 delete 方法)一段代码并重复它直到我
这是我的代码片段 console.log("IS RESTCLIENT UNDEFINED?"); console.log(restClient === undefined); conso
我正在进行 RESTful WS 调用,如下所示: ResponseEntity responseEntity = restTemplate.exchange(url,
能否请您更正我在调用 http delete 时在这里犯的错误。我收到 InternalServerError,没有进一步的解释。 相同的调用在 FireFox RESTClient 插件上运行良好。
我正在尝试为我的解决方案安装 CodeIgniter RESTClient 和 RESTServer 库。 ( philsturgeon-codeigniter-restclient 和 chrisk
任何人都知道 RestSharp 的默认超时值休息客户端? 最佳答案 RestSharp 在后台使用 HttpWebRequest,它有一个 default timeout 100 秒。 关于http
我试图了解 RestClient.send 的定义位置无济于事:-( 让我向你解释一下我的意思: 我一直在查看 iqengines.com ruby api gem,他们使用 RestClient
我是一名优秀的程序员,十分优秀!