【问题标题】:Getting a value from XML response in REST-Assured从 REST-Assured 中的 XML 响应中获取值
【发布时间】:2019-12-27 13:24:10
【问题描述】:

我正在尝试使用 REST Assured 从 XML 响应中获取值,但我只得到空值。

XML 示例:

<?xml version="1.0" ?>
<ncresponse
    orderID="50143601"
    STATUS="5"
    SCORING="1"
    SCO_CATEGORY="G">
</ncresponse>

我的代码:

RestAssured.useRelaxedHTTPSValidation();
Map<String, String> body = new HashMap<>();
body.put("ORDERID", orderId);
body.put("USERID", QUERY.getUser());
body.put("PSW", QUERY.getPass());
Response validation = given().proxy(host("myproxy.com").withPort(8080)
    ).params(body).when().get(QUERY.getUrl());

return from(validation.asString()).get("ncresponse.STATUS");

在这种情况下,我试图获取 STATUS 值(“5”),但我得到的只是 "" 的任何属性。

任何帮助将不胜感激。

【问题讨论】:

    标签: java xml-parsing rest-assured


    【解决方案1】:

    好吧,我意识到我在这里犯了一个错误。我试图从节点“ncresponse”获取属性,所以在属性之前使用“@”符号是必要的:

    from(validation.asString()).get("ncresponse.@STATUS");
    

    我关闭了,谢谢大家!

    【讨论】:

      【解决方案2】:

      您需要先将响应转换为 xml 类型,然后从该响应中获取值。

      首先您需要在代码中导入以下内容:

      import io.restassured.path.xml.XmlPath;

      然后你的代码应该是:

      String stringResponse = validation.asString();
      XmlPath xmlPath = new XmlPath(stringResponse);
      String status = xmlPath.get("ncresponse.STATUS");
      

      现在字符串 status 包含您想要的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-28
        • 2020-12-23
        • 2020-11-23
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 1970-01-01
        • 2021-08-10
        相关资源
        最近更新 更多