Кодирование содержимого String в виде XML в запросе веб-службы - PullRequest
0 голосов
/ 16 августа 2011

Я столкнулся с проблемой, когда я должен использовать устаревший клиент веб-служб, разработанный на основе WSDL, который передает фактический XML-запрос в качестве значения единственной переменной в запросе.У веб-службы, которую я сейчас использую, другой WSDL, и я пытаюсь обмануть мой анализатор XML, однако он кодирует мой фактический ответ XML.

Есть ли способ настроить парсер, чтобы запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Header/>
   <soapenv:Body>
      <request>&lt;elemA&gt;&lt;elemB&gt;abc&lt;/elemB&gt;&lt;/elemA&gt;</request>
   </soapenv:Body>
</soapenv:Envelope>

был изменен на:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Header/>
   <soapenv:Body>
      <foo>
         <elemA>
            <elemB>abc</elemB>
         </elemA>
      </foo>
   </soapenv:Body>
</soapenv:Envelope>

Я использую JAX-WS и WebSphere 7.

Заранее спасибо.

Пабло

1 Ответ

0 голосов
/ 16 августа 2011

Мне приходилось сталкиваться с этой ситуацией в прошлом году, и для меня было решение обернуть XML, который шел в мыльном сообщении, в раздел CDATA.

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soapenv:Header/>
       <soapenv:Body>
          <![CDATA[
          <foo>
             <elemA>
                <elemB>abc</elemB>
             </elemA>
          </foo>
          ]]
       </soapenv:Body>
    </soapenv:Envelope>
...