- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Spring rest 服务中有一个方法。
@RequestMapping(value = "test/process", method = RequestMethod.POST)
public @ResponseBody MyResponse processRequest(String RequestId, int count)
我正在使用 Spring RestTemplate 来调用此服务。
RestTemplate restTemplate = this.getRestTemplate();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("RequestId", RequestId);
map.add("count", count);
restTemplate.postForObject(url, map,MyResponse.class);
当我尝试调用客户端方法时,出现异常找不到适合请求类型 [java.lang.Integer] 的 HttpMessageConverter
org.springframework.http.converter.HttpMessageNotWritableException: Could not write request: no suitable HttpMessageConverter found for request type [java.lang.Integer]
at org.springframework.http.converter.FormHttpMessageConverter.writePart(FormHttpMessageConverter.java:310)
at org.springframework.http.converter.FormHttpMessageConverter.writeParts(FormHttpMessageConverter.java:270)
at org.springframework.http.converter.FormHttpMessageConverter.writeMultipart(FormHttpMessageConverter.java:260)
at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:200)
at org.springframework.http.converter.FormHttpMessageConverter.write(FormHttpMessageConverter.java:1)
at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:596)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:444)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:409)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:287)
我知道其中一种方法是将所有参数作为字符串传递。但我可能需要稍后将复杂的数据类型作为参数传递。实现这一目标的方法是什么。我用谷歌搜索了一下,有些选项似乎是在编写我自己的转换器。我应该如何着手解决这个问题。
最佳答案
此错误的根本原因是,通过在 LinkedMultiValueMap
中指定一个 Integer
,RestTemplate
会将其视为您的请求是一个多部分请求。没有默认注册的 HttpMessageConverter
可以处理将 Integer
类型的值写入请求正文。
如您所说,您可以通过将 count
更改为 String
来处理这种情况。毕竟HTTP请求参数中没有Integer
类型。然而,你很担心
But I might need to pass complex data types as parameters later.
假设是这样的
public @ResponseBody MyResponse processRequest(String RequestId, int count, Complex complex) {
与
public class Complex {
private String someValue;
private int intValue;
public String getSomeValue() {
return someValue;
}
public void setSomeValue(String someValue) {
this.someValue = someValue;
}
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public String toString() {
return someValue + " " + intValue;
}
}
以下将正常工作
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("RequestId", "asd");
map.add("count", "42");
map.add("someValue", "complex");
map.add("intValue", "69");
restTemplate.postForObject(url, map,MyResponse.class);
请记住,请求参数用于按名称填充模型属性的字段。
更好的解决方案是使用 JSON 或 XML 等序列化标准。
关于具有整数值的请求参数的Spring RestTemplate postforobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20479074/
我在 Spring rest 服务中有一个方法。 @RequestMapping(value = "test/process", method = RequestMethod.POST) public
我正在尝试使用 postforobject 检索对象,只有当我尝试检索自定义对象时,才会出现异常错误,如果我重写服务并返回单个字符串并将 postforobject 返回到一个字符串,它就可以正常工作
嗨,我希望客户端能够使用一个安静的网络服务。我使用 springboot,该服务返回一个仅包含一个对象的 JSON 列表。我想像这样使用 RestTemplate 的 postForObject Ap
给定一个类 EncoderService ,它具有以下 createNewStream 方法以及该方法中使用的一堆常量,我如何使用 mockito 来为 createNewStream 方法编写单元测
让客户端应该将纯 json 字符串发送到 RESTful 服务: ... final Gson gson = new GsonBuilder().create(); final
我必须使用 postForObject() 将 JSON 数据从一种服务方法发送到另一种服务方法方法。 我在 RestTemplate 上看到了一个例子在 this link . postForObj
我尝试模拟 Restful 服务器: private void btnPostActionPerformed(java.awt.event.ActionEvent evt) {
这个问题已经有答案了: How to parse JSON in Java (36 个回答) 已关闭 3 年前。 我想知道是否有一种方法可以操作 RestTemplate 类的方法 postForOb
我是 Mockito 以及 Spring 的 RestTemplate 的新手。我正在对一项功能进行 JUnit 测试,该功能向 Web 服务发送请求并通过使用 RestTemplate 获取响应。我
我正在尝试执行 RESTful Web 服务,但是,当我发送请求时,出现 HttpClientErrorException 消息“415 Unsupported Media Type”。 这是服务调用
我正在尝试向身份验证服务器发送帖子消息,并且我正在使用 postforobject。当我运行程序时,我收到“线程“main”中的异常 org.springframework.web.client.Ht
我试图使用 RestTemplate postForObject 使用 firebase Auth API,但是当我将 String.class 指定为其工作文件的返回类型时,但如果我指定自定义类来处
我正在尝试将消息列表发布到其余 api。如何为下面的 postJSONData 方法编写 mockito junit: public class PostDataService{ @Autow
我目前正在开发一个 Rest-Service,它需要调用同一服务器上提供的另一个 Rest-Method。因此,例如路径/myPath/foo 上的方法需要从路径/myPath/restApi/bar
使用返回 json 字符串的 restful api。格式是 { "status": "ok", "result": { } } 我正在尝试将用户配置文件的响应映射到 UserProfile
在使用 RestTemplate 发送 POST 请求时,我一直收到 400 BAD 请求。这是我的代码: MultiValueMap requestBody = new LinkedMult
我已经设置了包含字符串 ["a", "b", "c"] ,我想要 POST json 数据,例如(逗号分隔和一个字符串)这是 JSON {"view" : "a,b,c", "fruits" : "a
我目前有一个带有字符串字段的 RestTemplate 响应对象来获取响应数据。我想在同一个对象中发送 InputStream。 下面是响应类 @XmlRootElement public class
在 Spring Boot Junit 测试中,当调用 when(mockRestTemplate.postForObject(Mockito.any(), Mockito.any(),Mockito
我正在使用以下方法调用网络服务。 ResponseBean responseBean = getRestTemplate() .postForObject(url, customerBean,
我是一名优秀的程序员,十分优秀!