9

我正在开发一个 Spring MVC Web 应用程序。我还没有开发 UI。所以我正在使用 Advance Rest Client 工具测试我的服务。

我的控制器

@Controller
@RequestMapping("/testController")
public class TestController {

@Autowired
private TestService testService;

@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE },  produces = { MediaType.APPLICATION_JSON_VALUE })
public
@ResponseBody void testMethod(@RequestBody TestParam testParam) {

    String tenant = testParam.getTenantCode();
    String testString = tenant + " is the tenant";
}
}

TestParam.java 类

public class TestParam {

private String testVar;
private String tenantCode;

public String getTenantCode() {
    return tenantCode;
}

public void setTenantCode(String tenantCode) {
    this.tenantCode = tenantCode;
}

public String getTestVar() {
    return testVar;
}

public void setTestVar(String testVar) {
    this.testVar = testVar;
}
}

我使用 Advance Rest Client 和标头发送请求,并且请求链接已正确设置。

{"testVar":"Test","tenantCode":"DEMO"}

请求链接

http://localhost:8080/myApp/controller/testController/test

当 TestParam 有一个可验证时,它可以正常工作。当它变成两个或更多时,它会给出一个错误并且它不会命中 testMethod。

exception is com.fasterxml.jackson.core.JsonParseException:  Unexpected end-of-input in field name at [Source:org.apache.catalina.connector.CoyoteInputStream@7b24d498; line: 1, column: 43]
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:181)
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.read(MappingJackson2HttpMessageConverter.java:173)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:135)

我去扔了更多的文章,我仍然找不到答案。

4

3 回答 3

36

作品增加Content-Length:_header

于 2016-04-19T14:50:09.087 回答
2

你的 json 格式是什么?我认为 json 格式使用文字 \n 作为分隔符,请确保 JSON 操作和源没有很好地打印。

于 2016-04-19T13:50:50.767 回答
1

ARC 中存在一个问题,即没有有效负载并且响应是 json 类型。解析器抛出错误,因为字符串为空并且响应报告正在崩溃。

于 2016-04-20T09:13:04.770 回答