Изменение в XML-запросе после передачи его в веб-сервис Call через SOAP - PullRequest
0 голосов
/ 16 мая 2018

ниже запроса xml может быть сформирован с помощью кода клиента службы, который отлично работает в окне dev. Сервер приложений - websphere-8.5.5.

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getPlanLookUpBySSN xmlns="http://example.com"><argLookupBySSNInput xmlns=""><applicationId>IVR</applicationId><client>PC</client><ivrInd>Y</ivrInd><scrollIndicator></scrollIndicator><scrollKey></scrollKey><ssn>12345</ssn><type>Dental</type><userId>IVR</userId><asOfDate></asOfDate></argLookupBySSNInput></getPlanLookUpBySSN></soapenv:Body></soapenv:Envelope>

Тот же код заглушки клиента будет развернут в UAT. URL-адрес сервера (WebSphere) и службы такие же, как в dev. но положение элемента сортируется в алфавитном порядке в поле UAT. Следовательно, веб-сервис не примет запрос XML, вместо этого он выдаст ошибку.

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getPlanLookUpBySSN xmlns="http://example.com"><argLookupBySSNInput xmlns=""><applicationId>IVR</applicationId><asOfDate></asOfDate><client>PC</client><ivrInd>Y</ivrInd><scrollIndicator></scrollIndicator><scrollKey></scrollKey><ssn>12345</ssn><type>Dental</type><userId>IVR</userId></argLookupBySSNInput></getPlanLookUpBySSN></soapenv:Body></soapenv:Envelope>  

В приведенном выше xml <asOfDate> положение элемента изменено. Пожалуйста, помогите нам решить эту проблему.

1 Ответ

0 голосов
/ 16 мая 2018

Вам может потребоваться изменить WSDL и сделать элемент схемы getPlanLookUpBySSN в фиксированной последовательности, как показано ниже, и восстановить ваш клиент.Что-то вроде ниже.тег делает последовательность тегов жесткой.

<xs:element name="getPlanLookUpBySSN">
          <xs:complexType>
                 <xs:sequence>
                        <xs:element name="argLookupBySSNInput">
                               <xs:complexType>
                                      <xs:sequence>
                                             <xs:element name="applicationId" type="xs:string"></xs:element>
                                             <xs:element name="asOfDate"></xs:element>
                                             <xs:element name="client" type="xs:string"></xs:element>
                                             <xs:element name="ivrInd" type="xs:string"></xs:element>
                                             <xs:element name="scrollIndicator"></xs:element>
                                             <xs:element name="scrollKey"></xs:element>
                                             <xs:element name="ssn" type="xs:int"></xs:element>
                                             <xs:element name="type" type="xs:string"></xs:element>
                                             <xs:element name="userId" type="xs:string"></xs:element>
                                         </xs:sequence>
                                      <xs:attribute name="xmlns" type="xs:string"></xs:attribute>
                                  </xs:complexType>
                           </xs:element>
                    </xs:sequence>
                 <xs:attribute name="xmlns" type="xs:string"></xs:attribute>
             </xs:complexType>
      </xs:element>
...