如何使用Java在放心的框架中传递大型复杂的xml正文

问题描述 投票:0回答:1

我已经处理了少于20行的小型xml正文请求,并在Java中为其创建了键值对。但是我必须使用acord xml作为有效负载请求才能获得超过250行的响应。我尝试使用表单数据作为无法正常工作的.xml文件提供。contentType为xml格式,并且以xml格式接收响应。

有人可以在正确的方向上指导我,如果在框架中进行编码,如何实现这一目标?

@Test
public void xmlPostRequest_Test() {

    RestAssured.baseURI = "http://localhost:8006";

    String requestBody = "<client>\r\n" +
        "    <clientNo>100</clientNo>\r\n" +
        "    <name>Tom Cruise</name>\r\n" +
        "    <ssn>124-542-5555</ssn>\r\n" +
        "</client>";

    Response response = null;

    response = given().
    contentType(ContentType.XML)
        .accept(ContentType.XML)
        .body(requestBody)
        .when()
        .post("/addClient");

    System.out.println("Post Response :" + response.asString());
    System.out.println("Status Code :" + response.getStatusCode());
    System.out.println("Does Reponse contains '100 Tom Cruise 124-542-5555'? :" + response.asString().contains("100 Tom Cruise 124-542-5555"));
}
java xml-parsing rest-assured
1个回答
0
投票

您应该使用文件来传递xml有效负载。

请参见下面的代码并提供反馈。它已经过测试,可以正常工作。

import static io.restassured.RestAssured.given;
import static io.restassured.RestAssured.when;
import static org.hamcrest.Matchers.is;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

import org.json.JSONObject;
import org.testng.Assert;
import org.testng.annotations.Test;

import io.restassured.RestAssured;
import io.restassured.filter.session.SessionFilter;
import io.restassured.http.ContentType;
import io.restassured.path.json.JsonPath;
import io.restassured.path.xml.XmlPath;
import io.restassured.response.Response;

public class XmlExample {
    //@Test
    public void postComplexXML() throws IOException {
        String FilePath="path\\to\\xml.xml";
        String XMLBodyToPost=generateStringFromResource(FilePath);
        RestAssured.baseURI="http://services.groupkt.com/state/get/IND/UP";
    Response res=   given().queryParam("key", "value").body(XMLBodyToPost).when().post().then().statusCode(201).and().
        contentType(ContentType.XML).extract().response();
    //Pass the RrstAssured Response to convert to XML
    XmlPath x=rawToXML(res);
    //Get country value from response
    String country=x.get("RestResponse.result.country");
    int size=x.get("result()");
    }
© www.soinside.com 2019 - 2024. All rights reserved.