【发布时间】:2017-04-03 05:14:32
【问题描述】:
我尝试使用 Spring Restful 网络服务。
我在两个 Eclipse 中创建了两个项目。在一个项目中,我编写了 RestClient 程序,在另一个项目中,我编写了 web 服务并通过 tomcat 盯着 web 服务。我正在尝试将 java bean 作为客户端和服务器之间的 json 通信传递。
但我遇到了以下异常。
org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type
我尝试了很多方法,但都没有成功。下面是我的代码 sn-p。
客户端方法:
private static void postTrack() {
try {
final String uri = "http://localhost:8181/RestWS/test";
Track track = new Track();
track.setTitle("Singer");
track.setSinger("Shas");
RestTemplate restTemplate = new RestTemplate();
Track responseTrack = restTemplate.postForObject(uri, track, Track.class);
} catch (Exception e) {
e.printStackTrace();
}
}
服务方式:
@RequestMapping(value = "/test", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody Track testMethod(@RequestBody Track track) {
System.out.println(" Inside Test Method : ");
System.out.println(" In GreetingController.greeting() "+track.getSinger());
return track;
}
跟踪类:
public class Track {
String title;
String singer;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
@Override
public String toString() {
return "Track [title=" + title + ", singer=" + singer + "]";
}
}
我也试过
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
还有
MultiValueMap<String, String> header = new LinkedMultiValueMap<String, String>();
header.add("Content-Type", "application/json");
HttpEntity<Object> httpEntity = new HttpEntity<Object>(track, header);
ResponseEntity<Track> response = restTemplate.exchange(uri, HttpMethod.POST, httpEntity, Track.class);
【问题讨论】:
-
看看这个答案。 stackoverflow.com/questions/4075991/… 另外,您可以使用“consumes”而不是在其余 api 中指定标头。像这样:@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType .APPLICATION_JSON_VALUE)
-
我尝试了这个 URL 的答案,但没有成功。
-
对不起,我使用了消耗 = MediaType.APPLICATION_JSON_VALUE。但同样的问题。是否存在与依赖 jar 文件相关的问题?
-
打开
org.springframework.web登录到调试,看看传入的媒体类型。特别是,确认它没有使用表单编码。作为说明,请查看较新的 Spring 复合注释;你可以使用@RestController,你可以简化你到@PostMapping("/test")的映射。 -
好的,chrylis,让我检查一下调试。
标签: java spring web-services resttemplate restful-url