#java #soap #struts #ebay-api #ebay-lms
#java #soap #struts #ebay-api #ebay-lms
Вопрос:
Я пытаюсь использовать API крупных торговых сервисов, предоставляемый eBay, для загрузки файлов на eBay.
Они предоставили sample.jar файл того же самого. Кажется, что все работает нормально, когда мы запускаем файл .jar в командной строке, но когда я пытаюсь интегрировать его исходный код в свое веб-приложение, он выдает мне эту ошибку. Также я попытался создать клиент веб-службы с помощью Netbeans и попытался использовать его, но все равно он выдал мне ту же ошибку. Я также изменил версию SOAP с 1.1 на 1.2, но это тоже, похоже, не работает. Ниже приведена полная трассировка стека.
Nov 11, 2011 2:59:41 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl init
SEVERE: SAAJ0533: Cannot create message: incorrect content-type for SOAP version. Got text/xml; charset=UTF-8, but expected application/soap xml
Nov 11, 2011 2:59:41 PM com.sun.xml.internal.messaging.saaj.soap.MessageImpl init
SEVERE: SAAJ0535: Unable to internalize message
Exception in thread "main" javax.xml.ws.WebServiceException: Couldn't create SOAP message due to exception: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.internal.ws.util.SOAPConnectionUtil.getSOAPMessage(SOAPConnectionUtil.java:83)
at com.sun.xml.internal.ws.encoding.soap.client.SOAPXMLDecoder.toSOAPMessage(SOAPXMLDecoder.java:102)
at com.sun.xml.internal.ws.protocol.soap.client.SOAPMessageDispatcher.receive(SOAPMessageDispatcher.java:440)
at com.sun.xml.internal.ws.protocol.soap.client.SOAPMessageDispatcher.doSend(SOAPMessageDispatcher.java:260)
at com.sun.xml.internal.ws.protocol.soap.client.SOAPMessageDispatcher.send(SOAPMessageDispatcher.java:139)
at com.sun.xml.internal.ws.encoding.soap.internal.DelegateBase.send(DelegateBase.java:86)
at com.sun.xml.internal.ws.client.EndpointIFInvocationHandler.implementSEIMethod(EndpointIFInvocationHandler.java:174)
at com.sun.xml.internal.ws.client.EndpointIFInvocationHandler.invoke(EndpointIFInvocationHandler.java:108)
at $Proxy28.createUploadJob(Unknown Source)
at com.SwiftConnectV1.fileprocess.LMS.BulkDataExchangeActions.createUploadJob(BulkDataExchangeActions.java:138)
at com.SwiftConnectV1.fileprocess.LMS.LMSClientJobs.createUploadJob(LMSClientJobs.java:154)
at com.SwiftConnectV1.fileprocess.LMS.LMSSample.main(LMSSample.java:74)
Caused by: Couldn't create SOAP message due to exception: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.internal.ws.util.SOAPUtil.createMessage(SOAPUtil.java:154)
at com.sun.xml.internal.ws.util.SOAPConnectionUtil.getSOAPMessage(SOAPConnectionUtil.java:78)
... 11 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to internalize message
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:475)
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:278)
at com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl.<init>(Message1_2Impl.java:61)
at com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl.createMessage(SOAPMessageFactory1_2Impl.java:62)
at com.sun.xml.internal.ws.util.SOAPUtil.createMessage(SOAPUtil.java:152)
... 12 more
Caused by: com.sun.xml.internal.messaging.saaj.soap.SOAPVersionMismatchException: Cannot create message: incorrect content-type for SOAP version. Got: text/xml; charset=UTF-8 Expected: application/soap xml
at com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:356)
... 16 more
Ответ №1:
SAAJ0533: Не удается создать сообщение: неверный тип содержимого для версии SOAP. Получен текст / xml; кодировка = UTF-8, но ожидаемое приложение / soap xml
Основываясь на сообщении об исключении, я говорю, что вы что-то перепутали.
Для всех отправляемых сообщений SOAP Content-type
заголовок должен быть:
text/xml
для SOAP версии v1.1application/soap xml
для SOAP версии v1.2.
Сначала проверьте это, затем мое предложение состояло бы в том, чтобы попытаться увидеть, что происходит на проводе (например, с помощью Fiddler), а затем сравнить, что отличается в вашем веб-приложении в отличие от sample.jar
того, которое работает.
Комментарии:
1. Изменение типа содержимого не сработало. Я попробую использовать Fiddler сейчас, спасибо.
2. убедитесь, что вы не отправляете ‘;action =»»‘ в заголовке conent-type запроса для SOAP версии v1.2
Ответ №2:
SAAJ0533: Не удается создать сообщение: неверный тип содержимого для версии SOAP. Получен текст / xml; кодировка = UTF-8, но ожидаемое приложение / soap xml
На самом деле, мы получили эту ошибку, потому что SaajSoapMessageFactory был создан «вручную», а не как @Bean, поэтому жизненный цикл Spring не взял на себя ответственность за него и не вызвал метод afterPropertiesSet.
Итак, следуйте этим примерам и советам:
Надеюсь, это поможет,
Ответ №3:
Заработало, похоже, что мой JDK был поврежден всеми внешними файлами jar, которые я добавил, чтобы заставить его работать. Обновлено до Java 7, и, похоже, теперь все работает нормально.