Я пытаюсь передать значение из ответа одного вызова WS на запрос другого, используя SoapUI Transfer Property TestStep.
Первый ответ WS:
<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> <ns5:PSResponse xmlns:ns5="http://www.ab.com/abonline/service/PaymentService/1.0/" xmlns:ns6="http://www.ab.com/abonline/service/CustomerCard/1.0/" xmlns:ns7="https://secure.incab.se/DTServerModuleService/v1"> <ns5:abTransactionReference>1085-0</ns5:abTransactionReference> <ns5:status>0</ns5:status> </ns5:PSResponse> </soapenv:Body> </soapenv:Envelope>
Парсингсвойство отлично работает, используя выражение вроде: declare namespace ns5="http://www.ab.com/abnline/service/PaymentService/1.0/" //ns5:abTransactionReference
declare namespace ns5="http://www.ab.com/abnline/service/PaymentService/1.0/" //ns5:abTransactionReference
Следующий запрос:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.ab.com/abonline/service/PaymentService/1.0/"> <soapenv:Header/> <soapenv:Body> <UpdatePaymentRequest> <abTransactionReference>30</abTransactionReference> ... ...
Я пытаюсь вставить свойство в следующий запрос, используя: //abTransactionReference
//abTransactionReference
Дает мне: [Missing match for Target XPath [//abTransactionReference]]
[Missing match for Target XPath [//abTransactionReference]]
Я также пробовал полный xpath: declare namespace soapenv="http://schemas.xmlsoap.org/soap/envelope/" //soapenv:Envelope/soapenv:Body/UpdatePaymentRequest/abTransactionReference
declare namespace soapenv="http://schemas.xmlsoap.org/soap/envelope/" //soapenv:Envelope/soapenv:Body/UpdatePaymentRequest/abTransactionReference
..., что приводит к аналогичной ошибке.
Вы не можете использовать "" для определения пространства имен. Например, в случае выше >>
""
declare namespace soapenv="http://schemas.xmlsoap.org/soap/envelope/"
должно быть
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/';
Попробуйте добавить утверждения XPath к сообщению запроса UpdatePaymentRequest. Нажмите кнопку «Объявление» в диалоговом окне «Конфигурация соответствия XPath», и вы увидите, какой префикс soapUI использует для пространства имен «http://www.ab.com/abonline/service/PaymentService/1.0/'». Я думаю, что это будет как:
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1='http://www.ab.com/abonline/service/PaymentService/1.0/';
.
declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1='http://www.ab.com/abonline/service/PaymentService/1.0/'; /soapenv:Envelope/soapenv:Body/ns1:UpdatePaymentRequest/ns1:abTransactionReference
Похоже, вы должны установить пространство имен по умолчанию http://www.ab.com/..., а также
http://www.ab.com/...