我正在尝试使用HTTP Post方法向rest服务发送string
对象。并且字符串应该在请求正文中发送。
@RestController
@RequestMapping(value = "post", method = RequestMethod.POST)
public class HttpMethodPostController {
/*HttpClientErrorException: 415 null*/
@RequestMapping(value = "/string_as_text", consumes = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<Void> getStringAsText(@RequestBody String text) {
System.out.println("[Server] text = " + text);
return new ResponseEntity<Void>(HttpStatus.OK);
}
/*HttpClientErrorException: 400 null*/
@RequestMapping(value = "/string_as_json", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Void> getStringAsJSON(@RequestBody String text) {
System.out.println("[Server] text = " + text);
return new ResponseEntity<Void>(HttpStatus.OK);
}
@RequestMapping(value = "/type1_", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Void> postType1_(@RequestBody Type1_ type1_) {
System.out.println("[Server] type1_ = " + type1_);
return new ResponseEntity<Void>(HttpStatus.OK);
}
}
public class HttpMethodPostConsumer {
public static final String POST_ADDRESS = "http://localhost:55055/post";
/*HttpClientErrorException: 415 null*/
public static void postStringAsText(String text) {
final RestTemplate restTemplate = new RestTemplate();
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
final HttpEntity<String> entity = new HttpEntity<>(text, headers);
final URI uri = restTemplate.postForLocation(POST_ADDRESS + "/string_as_text", entity, String.class);
System.out.println("uri = " + uri);
}
/*HttpClientErrorException: 400 null*/
public static void postStringAsJSON(String text) {
final RestTemplate restTemplate = new RestTemplate();
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
final HttpEntity<String> entity = new HttpEntity<>(text, headers);
final URI uri = restTemplate.postForLocation(POST_ADDRESS + "/string_as_json", entity, String.class);
System.out.println("uri = " + uri);
}
public static void postType1_(Type1_ type1_) {
final RestTemplate restTemplate = new RestTemplate();
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
final HttpEntity<Type1_> httpEntity = new HttpEntity<Type1_>(type1_, headers);
final URI result_URI = restTemplate.postForLocation(POST_ADDRESS + "/type1_", httpEntity, Type1_.class);
System.out.println("result_URI = " + result_URI);
}
}
public class HttpMethodPostConsumerTest {
/*HttpClientErrorException: 415 null*/
@Test
public void test_postStringAsText() {
final String text = Randomizers.getString();
System.out.println("text = " + text);
postStringAsText(text);
}
/*HttpClientErrorException: 400 null*/
@Test
public void test_postStringAsJSON() {
final String text = Randomizers.getString();
System.out.println("text = " + text);
postStringAsJSON(text);
}
@Test
public void test_postType1_() {
final Type1_ type1_ = ModelFactory.getType1_();
System.out.println("[Consumer] type1_ = " + type1_);
postType1_(type1_);
}
}
在org.springframework.web.client.defaultresponseerrorhandler.handleerror(defaultresponseerrorhandler.java:94)在org.springframework.web.client.defaultresponseerrorhandleerror(defaultresponseerrorhandler.java:79)在org.springframework.web.client.responseerrorhandleerror(responseerrorhandler.java:63)在org.springframework.web.client.resttemplate.handleresponse(resttemplate.java:775)在.springframework.web.client.resttemplate.execute(resttemplate.java:684)在org.springframework.web.client.resttemplate.postforlocation(resttemplate.java:405)在personal.learn.java.spring_rest.rest_general.non_automate.consumers.httpmethodpostconsumer.poststringastext(httpmethodpostconsumer.java:21)在
test_poststringasjson()
将导致错误
org.springframework.web.client.HttpClientRorexception:400 null
在org.springframework.web.client.defaultresponseerrorhandler.handleerror(defaultresponseerrorhandler.java:94)在org.springframework.web.client.defaultresponseerrorhandleerror(defaultresponseerrorhandler.java:79)在org.springframework.web.client.responseerrorhandleerror(responseerrorhandler.java:63)在org.springframework.web.client.resttemplate.handleresponse(resttemplate.java:775)在.springframework.web.client.resttemplate.execute(resttemplate.java:684)在org.springframework.web.client.resttemplate.postforlocation(resttemplate.java:405)在personal.learn.java.spring_rest.rest_general.non_automated.consumers.httpmethodpostconsumer.poststringasjson(httpmethodpostconsumer.java:31)在personal.learn.java.spring_rest.rest_general.non_automated.consumers.httpmethodpostconsumertest.test_poststringasjson(
服务器端错误(控制台中)
02-may-2018 17:25:45.469警告[http-nio-55055-exec-2]org.springframework.web.servlet.mvc.support.defaultHandlerExceptionResolver.HandleHttpMessageNotReadable无法读取HTTP消息:org.springframework.HTTP.converter.httpMessageNotReadable异常:JSON分析错误:无法识别的令牌“IATQDixtch”:应为“null”、“true”、“false”或NaN;嵌套异常为com.fasterxml.jackson.core.JSONParseException:无法识别的标记“IATQDixtch”:在[Source:(PushbackInputStream);行:1,列:21]处应为“null”、“true”、“false”或NaN
服务器端错误(在Tomcat Catalina日志中)
如果您想要使用@RequestBody发布到您的服务器,那么需要将一个对象发送到您的控制器。
使用字符串参数创建DTO类:
public class ExampleDTO {
private String stringExample;
public String getStringExample() {
return stringExample;
}
public void setStringExample(String stringExample) {
this.stringExample= stringExample;
}
}
您的控制器:
@RequestMapping(method = RequestMethod.POST, value = "/string_as_text")
public ResponseEntity<Void> getStringAsText(@RequestBody ExampleDTO exampleDTO) {
System.out.println("[Server] text = " + exampleDTO.getStringExample());
return new ResponseEntity<Void>(HttpStatus.OK);
}
消费者
ExampleDTO param = new ExampleDTO();
param.setStringExample("text")
我试图通过AJAX向Spring控制器发送JSON对象,但收到错误415: 下面是我的javascript调用- 这里是我的依赖项杰克逊相关的依赖项在我的POM- 讽刺的是,当我试着穿Spring靴的时候,它就起作用了。
我可以在POST请求时发送对象列表作为响应,并在VueJs客户端中接收它 但是当我尝试用自定义类响应时(我甚至在请求映射注释中添加了) 在axios的帮助下发送VueJs端请求。邮递 Vue用户界面客户端接收 为什么我可以用对象列表响应而不能用POJO响应,以及如何解决这个问题?非常感谢。 PS.项目依赖于jackson-数据库v2.8.2和Spring v4.3.1
我在firefox web Browser中使用Rest Client add on。我想测试一个处理HTTP POST请求并使用JSON的web服务。我如何使用Rest Client测试它? 如果在请求正文中添加json,将得到一个*HTTP 415不受支持的媒体类型错误*。 这样做的正确方法是什么?
我在Java客户端有以下代码,它调用基于Spring的REST服务,我得到一个HTTP 400错误。但它与POST man Client完美配合 Java客户端: 服务器端REST服务代码为 现在,当客户端发送请求时,它会给我http 400错误,这可能是因为在客户端,即时消息发送JSON字符串,而在服务器端,它是一个主体,但这在POST MAN上有效 谁能建议我如何通过Java向基于spring
我正在构建和测试一个简单的Spring Boot API REST教程。我面临着一个我正在努力理解的问题。当调用POST方法来创建并持久化一个新实体时,我得到了一个HTTP 406(不可接受)。 问题是实体被持久化了,但对客户端的响应不是预期的(在本例中,HTTP 201是用URI创建的)。 Tutorial和TutorialDto类具有完全相同的属性。定义如下: 以下是我在@RestContro
我试图将JSON发送到Spring MVC控制器。在Spring MVC方面,所有的配置都是正确的。 下面是代码,但似乎没有运行: 你知道我哪里出错了吗?我对JSON是新手。我试图将JSON发送到Spring MVC控制器。 当调用/application/run/save时,我会得到一个JSON响应。但是,@RequestBody不能工作。 我还是没有运气。读过一些很多类似的问题。需求是服务器将