2017-01-25 10 views
0

Я уверен, что это просто ошибка пилота, но не может найти решение. У вас есть веб-сервис jax-ws с операцией полезной нагрузки на мыло, которая включает вложение. Вот фрагмент документа схемы. Это тип определяется:Вложение MTOM дважды закодировано в полезной нагрузке SOAP

<xs:complexType name="BinaryAttachmentType"> 
      <xs:simpleContent> 
       <xs:restriction base="xmime:base64Binary"> 
       <xs:attribute ref="xmime:contentType" use="required" /> 
       </xs:restriction> 
      </xs:simpleContent> 
    </xs:complexType> 

Встроенные в этом определении элемента:

<xs:element name="Contact"> 
    <xs:complexType> 
     <xs:sequence> 
      <!-- removed other elements --> 
      <xs:element name="Attachment" type="BinaryAttachmentType" minOccurs="0" maxOccurs="1"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element 

Использование SoapUI, SOAP выглядит следующим образом:

<hsn:Contact> 
    <!-- other elements --> 
     <hsn:Attachment xm:contentType="image/jpeg">cid:323665198529</hsn:Attachment> 
</hsn:Contact> 

Прикрепленный файл в SoapUI: enter image description here Когда я посмотрите на http из журнала:

заголовок HTTP:

"Content-Type: multipart/related; type="text/xml"; start="<[email protected]>"; boundary="----=_Part_15_23791896.1485382707426"" 
"SOAPAction: "http://hsn.us.banner.hsntech.com/Level1Request"" 
"MIME-Version: 1.0" 
"Content-Length: 104164" 
"Host: localhost:7001" 
"User-Agent: Apache-HttpClient/4.1.1 (java 1.5)" 
"------=_Part_15_23791896.1485382707426" 
"Content-Type: text/xml; charset=UTF-8" 
"Content-Transfer-Encoding: 8bit" 
"Content-ID: <[email protected]>" 

в SOAP тела, см крепежный элемент с base64-закодированный файл:

<hsn:AttachmentFileName>test1.jpg</hsn:AttachmentFileName> 
     <hsn:Attachment xm:contentType="image/jpeg">/9j/4AAQSkZJRgABAQEAYABgAAD .. rest of base64 encoding 

затем после SOAP сообщения, закодированные вложение снова:

------=_Part_15_23791896.1485382707426 
    Content-Type: image/jpeg; 
    name=Foo.jpg 
    Content-Transfer-Encoding: binary 
    Content-ID: <Foo.jpg> 
    Content-Disposition: attachment; name=Foo.jpg; filename=Foo.jpg 

    (... encoded attachment again) 
[0xff][0xd8][0xff][0xe0][0x0][0x10]JFIF[0x0][0x1][0x1][0x1][0x0]`[0x0]`[0x0][0x0][0xff][0xdb][0x0]C[0x0][\n] 

Итак, почему файл дважды закодирован в запросе? Благодарю.

ответ

1

Убедитесь, что Enable MTOM устанавливается в свойствах запроса Истинного:

Request Properties