2013-04-12 4 views
1

У меня есть образец Spring-WS WebService, развернутый на Tomcat. Я могу успешно назвать это с клиентом Java, но когда я пытаюсь использовать клиент ФрамбезияYaws SOAP client Content-Type

Wsdl = yaws_soap_lib:initModel("http://localhost:8080/EncryptionService/holiday.wsdl"). 
yaws_soap_lib:call(Wsdl, "Holiday", [], [{'p:HolidayRequest', [], "aaa"}]). 

я на стороне сервера исключение:

org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [spring-ws] in context with path [/EncryptionService] threw exception [Request processing failed; nested exception is org.springframework.ws.soap.SoapMessageCreationException: Could not create message from InputStream: Invalid Content-Type:application/xml. Is this an error message instead of a SOAP response?; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Invalid Content-Type:application/xml. Is this an error message instead of a SOAP response?] with root cause 
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Invalid Content-Type:application/xml. Is this an error message instead of a SOAP response? 
     at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.identifyContentType(MessageImpl.java:602) 
     at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:275) 
     at com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl.<init>(Message1_1Impl.java:67) 
     at 
(...) 

Когда я сравнивал Java и фрамбезии HTTP-запросы, первый имеет «Content-Type: text/xml; charset = utf-8», а второй - «Content-Type: application/xml; charset = utf-8». Однако в исходном файле yaws_soap_lib.erl, тип контента, кажется, жёстко:

make_request_body(Content, []) -> 
    {"application/xml; charset=utf-8", 
    "<?xml version=\"1.0\" encoding=\"utf-8\"?>"++ Content}; 
make_request_body(Content, AttachedFiles) -> 
    {"application/dime", 
    yaws_dime:encode("<?xml version=\"1.0\" encoding=\"utf-8\"?>" ++ Content, 
         AttachedFiles)}. 

Когда я изменил, что «текст/XML» и перекомпилировать клиент Yaws отлично работает.

Есть ли способ заставить клиента работать без изменения исходного кода?

Я могу прикрепить WSDL и контент запроса/ответа, но я не думаю, что это действительно необходимо здесь.

ответ

0

Я не думаю, что есть, почему бы вам не подать отчет об ошибке на github project's page? Или, может быть, еще лучше предоставить патч.