RESTtemplateを介してputリクエストを行うために、次の形式を使用しようとしています。
@Autowired
RestTemplate template;
@RequestMapping(value = "/change", method = RequestMethod.PUT)
public ModelAndView change(Data data){
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_XML);
HttpHeaders headers = new HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity<Data> entity = new HttpEntity<Data>(data, headers);
String url="http://www...com";
try {
template.put(url, entity);
} catch (Exception e) {
System.out.println(e);
}
return new ModelAndView("redirect:/home");
}
データベースを確認したところ、変化がないことに気づきました。リクエストもログファイルに書き込まれません。デバッグ中、エラーは発生しません。おそらく、putメソッドを正しく使用していません。putメソッドをどのように使用するか、またはRestTemplateを使用してputリクエストを実行するために他に何を試みる必要があるかを誰かに提案できますか?
また、私はputの代わりにexchangeメソッドを使用しようとします:
try {
ResponseEntity<Data> result = template.exchange(Url, HttpMethod.PUT, entity, Data.class);
} catch (Exception e) {
System.out.println(e);
}
しかし、この場合、私は次の例外を取ります:
org.springframework.web.client.RestClientException:応答を抽出できませんでした:応答タイプ[website.Data]およびコンテンツタイプ[text / html; charset=utf-8]に適したHttpMessageConverterが見つかりませんでした。
ヘッダーからわかるように、コンテンツタイプをtext/htmlではなくapplication/xmlとして設定します。ヘッダーを見ると、次のものが含まれていることがわかります。
Accept: application/xml
本当に分かりません。他に何を変更する必要がありますか?例外について何かコメントはありますか?
構成:
<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:basename="config/views" p:order="1" />
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/classes/config/xml-views.xml</value>
</property>
<property name="order" value="0" />
</bean>
<!--It is used for redirect-->
<bean id="urlBasedViewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value=""/>
<property name="suffix" value=""/>
<property name="order" value="2" />
</bean>
<context:annotation-config />
<!--<context:annotation-config />-->
<context:component-scan base-package="data.controller" />
<context:component-scan base-package="data.service" />
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
</list>
</property>
</bean>