2017-07-06 63 views
0

我試圖用Spring發佈表單數據。該表格數據是XML格式。但每次我嘗試發佈時,我都會收到415錯誤。發佈到Spring中的XML媒體類型表單

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); 

} 

由於上述不工作,我去了,實現了這個:

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接受請求:

<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錯誤。我也嘗試在Java代碼中將MediaType設置爲APPLICATION_FORM_URLENCODED,但我得到了415錯誤。如何使用Spring發佈到XML表單?任何幫助,將不勝感激。

回答

0
  1. 在第一個blob中將ContentType更改爲APPLICATION_FORM_URLENCODED。與Http消息轉換器混淆的第二塊代碼是沒用的。我不知道Form是什麼,你正在填充 - MultiValueMap也應該工作。
  2. 使用POST方法,而不是PUT。 postForEntitypostForObject應該這樣做。
  3. 真相被告知,我從來沒有見過像上面這樣在XML中聲明的Spring控制器,而且我是Spring提交者。你有沒有考慮過使用註釋?世界在2011年停止使用XML Spring配置。
+0

謝謝你好多,它的工作原理! –

相關問題