2017-09-08 69 views
1

這裏的第一次海報所以希望我的問題是有道理的,你可以提供幫助。我目前正在發送SOAP XML請求並接收來自第三方API的響應。我正在尋找檢索響應中返回的特定值,並將其傳遞給後續請求返回到相同的API。JMeter Xpath extrator

我使用XPath提取然而,實現這一目標的時候,我試圖通過對響應變量,該變量返回

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Header><wsse:Security xmlns:wsse="http://docs.oasis- 
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
..... 
</soap:Header> 
<soap:Body> 
<c:replyMessage xmlns:c="---------------------------"> 
<c:referenceNumber>84c74155-e260-46f9-98bf-5ba6ee6cbb20</c:referenceNumber> 
<c:backgroundCode>5048657036666628204009</c:backgroundCode> 
..... 
</c:replyMessage> 
</soap:Body> 
</soap:Envelope> 

我試圖通過這些字段是referenceNumber和backgroundCode使用XPath但是我收到錯誤

Assertion error: false 
Assertion failure: true 
Assertion failure message: Prefix must resolve to a namespace: c 
See log file for further details. 

任何意見,將不勝感激。如果您需要更多信息,請告訴我。

回答

1

首先:我強烈建議你不要使用XPath提取器。它通常很難使用,其性能非常糟糕。見this articlethis article

您選擇此任務:

  1. SmartMeter'sBoundary Body extractor - 非常容易使用,而且它也非常快,並且具有all.Example的最佳性能如何使用它這裏Boundary Body extractor configuration
  2. Regular expression extractor - 比第一個更慢,但仍比XPath提取器更好。使用它,例如與此正則表達式:\<c:referenceNumber\>(.*)\<\/c:referenceNumber\>enter image description here
  3. 如果我沒有說服你,請使用XPath extractor。但是I warned you。使用這個表達式//soap:Envelope/soap:Body/*[local-name()='replyMessage']/*[local-name()='referenceNumber']。不要忘記檢查使用命名空間enter image description here
+0

嗨klingac感謝您提供的feedback.It現在完美的作品。我現在正在使用XPath提取器,但是根據您所說的內容以及閱讀好的文章,我肯定會考慮未來的其他選項。 – Jace

+0

像魅力一樣工作。我不想使用另一個野獸(SmartMeter),所以我使用reqexp ... – Betlista