首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring中用XML媒体类型发布表单

在Spring中用XML媒体类型发布表单
EN

Stack Overflow用户
提问于 2017-07-06 21:15:11
回答 1查看 525关注 0票数 0

我试图用Spring发布表单数据。该表单数据为XML格式。但是每次我尝试发帖时,我都会得到415个错误。

代码语言:javascript
复制
public void setFormData(String name, Integer age){
  String url = "https://my.example.com/path/";

  HttpHeaders headers = new HttpHeaders();
  headers.setContentType(MediaType.APPLICATION_XML);

  Form form = new Form();

  form.set("name", name);
  form.set("age", age);

  HttpEntity<Object> request = new HttpEntity<Object>(form, headers);
  RestTemplate restTemplate = new RestTemplate();
  restTemplate.put(url, request);

}

由于上述操作不起作用,所以我执行了以下操作:

代码语言:javascript
复制
public void setFormData(String name, Integer age){
  String url = "https://my.example.com/";

  HttpHeaders headers = new HttpHeaders();
  headers.setContentType(MediaType.APPLICATION_XML);

  MultiValueMap<String, Object> params= new LinkedMultiValueMap<String, Object>();
  params.add("name", name);
  params.add("age", age);

  HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<MultiValueMap<String, Object>>(map, headers);
  RestTemplate restTemplate = new RestTemplate();

  List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
  Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter();
  List<MediaType> mediaTypes = new ArrayList<MediaType>();
  mediaTypes.add(MediaType.APPLICATION_XML);
  jaxbMessageConverter.setSupportedMediaTypes(mediaTypes);
  messageConverters.add(jaxbMessageConverter);
  restTemplate.setMessageConverters(messageConverters);

}

接受请求的XML:

代码语言:javascript
复制
<resource path="/path">
  <method name="POST">
   <request>
    <representation mediaType="application/x-www-form-urlencoded">
     <param name="name" style="query" type="xs:string">
     <param name="age" style="query" type="xs:int">
    </representation>
   </request>
  </method>
</resource>

但我还是得到了415错误。我还尝试在MediaType代码中将APPLICATION_FORM_URLENCODED设置为APPLICATION_FORM_URLENCODED,但得到了415错误。如何使用Spring发布到XML表单?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-06 21:38:50

  1. 将第一个blob中的ContentType更改为APPLICATION_FORM_URLENCODED。干扰Http消息转换器的第二大块代码是无用的。我不确定Form是什么,您正在填充- MultiValueMap也应该工作。
  2. 使用POST方法,而不是放置。无论是postForEntity还是postForObject都应该这样做。
  3. 说实话,我从来没有见过像上面这样用XML声明的Spring控制器,而且我是Spring提交者。您考虑过使用注释吗?2011年,世界停止使用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44958974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档