как получить конкретный ответ веб-службы с сервера - PullRequest
0 голосов
/ 30 ноября 2018

Поставщик веб-услуг предоставил нам (Клиенту) wsdl для использования их сервиса и использования данных.Наше требование в том, что нам просто нужно конкретное значение узла, называемое «CHASE», см. Ниже тестовые данные.Мы не хотим получать в ответ все записи информации и соответствующих узлов.

Вот пример, который мы протестировали в инструменте SOAPUI.Пожалуйста, предложите и помогите нам, как мы можем технически оформить запрос веб-службы с предоставленного URL-адреса (http://host:port/ValueMappingInService/ValueMappingInImplBean)? Возможно ли вообще детализировать запрос и получить конкретный ответ со стороны клиента?

ИнтернетЗапрос на обслуживание: -

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:bas="http://sap.com/xi/BASIS">
  <soapenv:Header/>
   <soapenv:Body>
      <bas:ValueMappingReadRequest>
         <!--Optional:-->
         <ReadContext>User</ReadContext>
    <!--Zero or more repetitions:-->
     <ValueMappingID>c44f541f-c8ac-11e8-86e5-0050569d98cc</ValueMappingID>
  </bas:ValueMappingReadRequest>
  </soapenv:Body>
</soapenv:Envelope>

 Web service Response:-

<SOAP-ENV:Envelope xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP- 
 ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <ns2:ValueMappingReadResponse xmlns:ns2="http://sap.com/xi/BASIS">
         <ValueMapping>
           <MasterLanguage>EN</MasterLanguage>
            <AdministrativeData>
           <ResponsibleUserAccountID>gdonna</ResponsibleUserAccountID>
           <LastChangeUserAccountID>gdonna</LastChangeUserAccountID>
           <LastChangeDateTime>2018-10-05T09:47:38.237-05:00</LastChangeDateTime>
           <FolderPathID>/</FolderPathID>
        </AdministrativeData>
        <ValueMappingID>c44f541f-c8ac-11e8-86e5-0050569d98cc</ValueMappingID>
        <GroupName>Mercedes</GroupName>
        <Representation schemeAgencyID="LOC_BANK" schemeID="BANK">CHASE</Representation>
        <Representation schemeAgencyID="LOC_SITE" schemeID="DIR">comm/as2/chase/receive/</Representation>
        <Representation schemeAgencyID="LOC_COUNTRY" schemeID="CODE">US</Representation>
     </ValueMapping>
     <LogMessageCollection/>
  </ns2:ValueMappingReadResponse>
    </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>

1 Ответ

0 голосов
/ 05 декабря 2018

Попробуйте использовать Groovy Script.Мне действительно нравятся функции XMLSlurper, который позволяет мне игнорировать пространства имен, если / когда они меняются.

Просто добавьте новый шаг теста Groovy Script и вставьте его в него.Вам просто нужно изменить имя вашего шага теста Soap Request, который должен быть помещен непосредственно перед этим шагом теста.

/** The name should be modified to match the request/response you want to validate */
def holder =  new com.eviware.soapui.support.GroovyUtils( context ).getXmlHolder("The Name Of Your Soap Request TestStep#Response")
def response = new XmlSlurper().parseText(holder.getXml())
for (def element : response.Body.ValueMappingReadResponse.ValueMapping.Representation) 
{
   log.info element
   log.info element.@'schemeAgencyID'
}
...