मैं सेवा/डिस्पैच तंत्र का उपयोग कर एक जेएक्स-आरएस संसाधन पोस्ट करने की कोशिश कर रहा हूं। समस्या यह है कि आउटगोइंग अनुरोध का सामग्री-प्रकार text/xml
पर बंद कर दिया गया है। मैं इसे किसी अन्य प्रकार के प्रकार में बदलने का तरीका नहीं देख सकता, उदाहरण के लिए application/xml
।जेएक्स-डब्ल्यूएस डिस्पैच अनुरोध सेटिंग सामग्री-प्रकार
RESTfull webservice केवल application/xml
और application/json
का उपभोग करता है। इस कोड का उपयोग मैं है:
public static void main(String[] args) {
QName qName = new QName("GREETINGS");
Service service = Service.create(qName);
service.addPort(qName, HTTPBinding.HTTP_BINDING, "http://localhost:8081/gf-ws-1/resources/greetings");
// change headers of the outgoing request
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("Content-Type", Arrays.asList(new String[] {"application/xml"}));
headers.put("Accept", Arrays.asList(new String[] {"zoo"}));
headers.put("foo", Arrays.asList(new String[] {"bar"}));
Dispatch<Source> dispatch = service.createDispatch(qName, Source.class, Service.Mode.PAYLOAD);
dispatch.getRequestContext().put(MessageContext.HTTP_REQUEST_METHOD, "POST");
dispatch.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);
dispatch.invokeOneWay(new StreamSource(new StringReader("<?xml version='1.0' encoding='UTF-8'?><greeting><value>Hello World!</value></greeting>")));
// get the response code: [HTTP/1.1 415 Unsupported Media Type] because of content type
System.out.println(((Map<String, Object>) dispatch.getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS)).get(null));
}
Accept
हैडर zoo
को संशोधित किया गया है, foo
हैडर मूल्य bar
साथ जोड़ा जाता है, लेकिन Content-Type
अपरिवर्तित रहता है। मुझे लगता है कि मैं कुछ शर्तों के आधार पर फ़िल्टर का उपयोग कर सकता हूं और Content-Type
संशोधित कर सकता हूं, या यहां तक कि foo हेडर पर भी आधारित है लेकिन यह काउंटर अंतर्ज्ञानी लगता है।
POST /gf-ws-1/resources/greetings HTTP/1.1
Accept: zoo
Content-Type: text/xml
foo: bar
User-Agent: Metro/2.2.0-1 (tags/2.2.0u1-7139; 2012-06-02T10:55:19+0000) JAXWS-RI/2.2.6-2 JAXWS/2.2 svn-revision#unknown
Host: localhost:8080
Connection: keep-alive
Content-Length: 86
किसी भी मदद की सराहना की है:
यहाँ अनुरोध के सभी हेडर हैं।