簡體   English   中英

解析SOAP響應消息Java

[英]Parsing SOAP response message java

我有以下SOAP響應消息,如果項目導入成功,則需要驗證響應代碼為1。 如何使用RestAssured和Java?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<env:Envelope 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <env:Header/>

<env:Body>
    <n1:importProjectResponse 
        xmlns:n1=" some text here......" 
        xmlns:n2="..some text here...." 
        xsi:type="n2:ArrayOfProjectImportResultCode">
        <n2:ProjectImportResultCode>
            <n2:code>1</n2:code>
            <n2:message>Project 'test1' import was successful.</n2:message>
        </n2:ProjectImportResultCode>
    </n1:importProjectResponse>
</env:Body></env:Envelope>

我正在使用RestAssured進行測試,如果可以通過利用RestAssured而不是編寫更多的類或方法來執行看似簡單的任務來避免代碼膨脹,那將是很棒的。 有任何想法嗎?

到目前為止,我已經嘗試過了,但是那當然不行

response  = given().
    auth().basic(USER, PASSWORD).
    body(request).
    headers("Content-type", "text/xml").
    expect().
        statusCode(200).
        body("//n2:code/text()", is("1")). // does not match .. hmmm :(
    when().post(URL);

這個應該可以//*[name()='n2:code']/text()

所以我從RestAssured支持論壇得到的答案是我可以嘗試使用GPath而不是xpath。 這對我有用:

response  = given().
auth().basic(USER, PASSWORD).
body(request).
headers("Content-type", "text/xml").
expect().
    statusCode(200).
    body("Envelope.Body.importProjectResponse.ProjectImportResultCode.code[0]", is("1")).
when().post(URL);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM