当前位置: 首页 > 知识库问答 >
问题:

Spring REST Jackson-StringBuilder未与JSON绑定

贺栋
2023-03-14

我正在使用Spring MVC RESTful Web服务

组织。springframework。网状物客户ResourceAccessException:POST请求“http://”时发生I/O错误:服务器返回了URL:http://嵌套异常为java的http响应代码:415。伊奥。IOException:服务器返回了URL:HTTP:的HTTP响应代码:415//

原因:java。伊奥。IOException:服务器返回了URL:HTTP:的HTTP响应代码:415//

请注意:在我的项目中,Bean有5000多个属性,其中包含嵌套的、复杂的和所有类型的对象。实际上,我很难发现这个问题,因为在一个嵌套对象中有StringBuilder属性,但它与上面的异常不同。所以我不知道其他人是如何发现这些问题的,因为例外和实际问题是不同的。

请求头是:头:{Accept=[application/json,application/*json],Content Type=[application/json;charset=UTF-8]。我在客户端和服务器上都得到了相同的请求头。

请求正文:{“id”:“1”,“name”:“Shas”,“sb”:null}

如果有人有解决方案,请分享。

客户端:

final String uri = "http://localhost:8282/WS/rest/add";
RestTemplate restTemplate = new RestTemplate(new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory()));
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
interceptors.add(new LoggingRequestInterceptor());
restTemplate.setInterceptors(interceptors);
Person person = new Person();
person.setId("1");
person.setName("Siva");
restTemplate.postForObject(uri, person, Person.class);

服务器端:

@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Person addPerson(@RequestBody final Person person) {
        try {
            if (person != null) {
                System.out.println("Person ID : "+person.getId());
            } else {
                System.out.println("Request Obj is null at ws controller");
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
        return person;
}

Person.java

public class Person implements Serializable {

    private static final long serialVersionUID = 1L;

    private String id = null;
    private String name = null;
    private StringBuilder sb = null;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public StringBuilder getSb() {
        return sb;
    }
    public void setSb(StringBuilder sb) {
        this.sb = sb;
    }
    public static long getSerialversionuid() {
        return serialVersionUID;
    }

}

异常完整跟踪:

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://":Server returned HTTP response code: 415 for URL: http://; nested exception is java.io.IOException: Server returned HTTP response code: 415 for URL: http://
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:580)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530)
    at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:330)
    at com.xxx.xxx(XXX.java:2782)
Caused by: java.io.IOException: Server returned HTTP response code: 415 for URL: http://
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1624)
    at org.springframework.http.client.SimpleClientHttpResponse.getBody(SimpleClientHttpResponse.java:81)
    at org.springframework.http.client.BufferingClientHttpResponseWrapper.getBody(BufferingClientHttpResponseWrapper.java:69)
    at com.xxx.LoggingRequestInterceptor.traceResponse(LoggingRequestInterceptor.java:41)
    at com.xxx.LoggingRequestInterceptor.intercept(LoggingRequestInterceptor.java:22)
    at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:84)
    at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:69)
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:569)
    ... 4 more

共有1个答案

郁隐水
2023-03-14

你能提供你想要点击的API的AcceptContent-Type标题吗?

 类似资料:
  • 公共类TestMyStringBuilderII{ } sb3=new StringBuilder(null)将导致NullPointerException。现在,StringBuilder()、StringBuilder(“”)和StringBuilder(null)之间有什么区别? 我不确定这个问题的表述是否正确,但如果有人能理解我在这里的想法/困惑,并澄清一下这些,我将非常感激。

  • 问题内容: 我正在阅读“ 更好,更快,更轻便的Java ”(作者Bruce Tate和Justin Gehtland),并且熟悉敏捷类型团队的可读性要求,例如Robert Martin在其干净的编码书中讨论的内容。在我现在所在的团队中,已明确告知我不要使用运算符,因为它会在运行时创建额外的(和不必要的)字符串对象。 但是,这篇写于‘04的文章讨论了对象分配如何与10条机器指令相关。(基本上免费)

  • 本文向大家介绍Python中绑定与未绑定的类方法用法分析,包括了Python中绑定与未绑定的类方法用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中绑定与未绑定的类方法。分享给大家供大家参考,具体如下: 像函数一样,Python中的类方法也是一种对象。由于既可以通过实例也可以通过类来访问方法,所以在Python里有两种风格: 未绑定的类方法:没有self 通过类来引用方

  • 本文向大家介绍string与stringbuilder两者的区别,包括了string与stringbuilder两者的区别的使用技巧和注意事项,需要的朋友参考一下 String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。  StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的

  • 问题内容: 在Python中,有没有办法绑定未绑定的方法而不调用它? 我正在编写一个程序,对于某个类,我决定将所有按钮的数据分组为类级别的元组列表是一件好事,如下所示: 问题是,因为所有的值r都是未绑定方法,所以我的程序爆炸得很厉害,我哭了。 我正在网上寻找解决方案,该方案应该是一个相对直接,可解决的问题。不幸的是我找不到任何东西。现在,我正在解决此问题,但是没有人知道是否存在一种干净,健康,Py

  • 我有一个包含以下列的表格: 表在在线数据库中。我使用dataset.xsd文件和连接字符串在客户端和在线数据库之间进行通信。 以下是我使用的一些方法: