döndürür. İlkbahardasonrası xml xml içerikli bir "yazı" destekleyen basit bir yay bazlı webservice oluşturmaya çalışıyorum Desteklenmeyen Ortam Türü
, ben bir AnnotationMethodHandler tanımlayın:
<bean id="inboundMessageAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<util:list>
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="xmlMarshaller"/>
<property name="unmarshaller" ref="xmlMarshaller"/>
</bean>
</util:list>
</property>
</bean>
Ve JAXB tabanlı xml diziciyi:
<bean id="xmlMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPaths">
<array>
<value>com.company.schema</value>
</array>
</property>
<property name="schemas">
<array>
<value>classpath:core.xsd</value>
</array>
</property>
</bean>
My kontrolör "Kaynak" JAXB tarafından otomatik bir sınıf olduğu, aşağıdaki gibi açıklamalı :
@RequestMapping(method = POST, value = "/resource")
public Resource createResource(@RequestBody Resource resource) {
// do work
}
WebService çağrısı sonucu her zaman "HTTP/1.1 415 Desteklenmeyen Med ia Türü ". İşte bir örnek hizmet çağrısıdır:
HttpPost post = new HttpPost(uri);
post.addHeader("Accept", "application/xml");
post.addHeader("Content-Type", "application/xml");
StringEntity entity = new StringEntity(request, "UTF-8");
entity.setContentType("application/xml");
post.setEntity(entity);
Ben her yerde mümkün doğru ortam türünü kuruyorum geliyor bana. Herkesin bir fikri var mı?
Düzenleme: o kadar uzak nesneyi unmarshal çalışmak gibi geçmez sanki daha da ayıklama sonra görünüyor. Oldukça AnnotationMethodHandler tipi uygulama/xml şey MarshallingHttpConverter gitmek gerektiğini bilir nasıl arkasında kara büyü anlamıyorum. Bu konuda herhangi bir ışık tutabilir mi?
teşekkürler. Kontrol ederim ve sınıfın gerçekten bir @XMLRootElement etiketi var. –
@Mayra: Ve 'Kaynak '' com.company.schema' paketindedir? Yaptığınız yapılandırmayla 'Jaxb2Marshaller' ı oluşturan bir birim testi yazmayı deneyin ve 'support' (Resource.class)' 'true' döndürdüğünden emin olun. Daha fazla almadan önce çalışması gerekiyor. – skaffman
Zar yok, bir Jaxb2Marshaller nesnesi oluşturdum, ilk dosyada olduğu gibi contextPath ve şemayı ayarladım ve sınıfımı desteklediğini söylüyor. –