2017-02-21 1 views
0

javax.xml.bind.UnmarshalException:予期しない要素(URI: ""、ローカル: "HTML")私は自分のWebサービスからオブジェクトを取得しようとすると、私は次の例外を取得し

javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"html"). Expected elements are <{}user> 

Userクラスは、ブラウザを介してWebサービスにアクセスするユーザーのXML表現を表示し、@XmlRootElementでアノテートされ

クライアントコード(私が使用しMediaType.TEXT_HTMLRestClientException原因MediaType.APPLICATION_XML理由):

RestTemplate restTemplate = new RestTemplate(); 
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter(); 
List<MediaType> mediaTypes = new ArrayList<MediaType>(); 
mediaTypes.add(MediaType.TEXT_HTML); 
jaxbMessageConverter.setSupportedMediaTypes(mediaTypes); 
messageConverters.add(jaxbMessageConverter); 
restTemplate.setMessageConverters(messageConverters); 
User x = restTemplate.getForObject("http://localhost:8080/Online_Shopping/dispatcher/rest/hello",User.class); 

Webサービスコード:

@Controller 
@RequestMapping(value = "/rest") 
public class RESTController { 

    @RequestMapping(value = "/hello", 
    method = RequestMethod.GET, 
    produces = MediaType.APPLICATION_XML_VALUE) 
    public @ResponseBody User getUser() { 
     return new User("paymon","123",true); 
    } 
} 
+0

application/xmlで取得しているRestClientExceptionの詳細を記載できますか? Acceptヘッダーを渡していないことがわかります。だからあなたが406を受け入れていないなら、受け入れられない。 Acceptヘッダーが存在しない理由 –

+0

org.springframework.web.client.RestClientException:応答を抽出できませんでした:レスポンスタイプ[class com.shopping.model.User]とコンテンツタイプ[text/html; charset = ISO-8859-1] –

+0

Paymon、RestTemplateコードに 'mediaTypes.add(MediaType.APPLICATION_XML_VALUE);'を追加して、今すぐ取得できるRestClientExceptionを教えてください。 –

答えて

0

は、私があるため、セキュリティインターセプタのWebサービスへのアクセスを持っていなかったが判明します。 <intercept-url pattern="/dispatcher/rest/**" access="hasRole('ROLE_ADMIN')"/>インターセプタをコメントアウトした後、私のWebサービスは正常に動作します。唯一の問題は、Javaコードを通じてWebサービスにアクセスするためにWebサービスを保護する方法が不思議です。

関連する問題