REST Assured Tutorial 20 – How to Send a JSON/XML File as Payload to Request
As a part of End to End REST Assured Tutorial , in this post We will learn about “How to send a JSON/XML file as payload to request in Rest Assured”.
Suppose you have a request payload (JSON or XML) in a file and you required to directly send that file as a payload to request in stead of reading it first and then passing. Sending file as a payload directly is a good idea when you have static payloads or minimal modification.
“body()” method of RequestSpecification interface is a overloaded method to allow you to pass payload in different ways. We will use body() method which accepts “File” as argument. Javadoc is below:-

Step 1:- Create a .json file and write payload in that. Keep the file in “src/test/resources” folder.

Step 2 :- Create a File in Java using “File” and pass to body() method.
package DifferentWaysOfPassingPayloadToRequest;
import java.io.File;
import org.hamcrest.Matchers;
import org.testng.annotations.Test;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
public class PassFileAsPayload {
@Test
public void passFileAsPayload()
{
// Creating a File instance
File jsonDataInFile = new File("src/test/resources/Payloads/AuthPayload.json");
//GIVEN
RestAssured
.given()
.baseUri("https://restful-booker.herokuapp.com/auth")
.contentType(ContentType.JSON)
.body(jsonDataInFile)
// WHEN
.when()
.post()
// THEN
.then()
.assertThat()
.statusCode(200)
.body("token", Matchers.notNullValue())
.body("token.length()", Matchers.is(15))
.body("token", Matchers.matchesRegex("^[a-z0-9]+$"));
}
}
Step 1:- Create a .xml file and write payload in that. Keep the file in “src/test/resources” folder.

Step 2:- Create a File in Java using “File” and pass to body() method.
@Test
public void passXMLFileAsPayload()
{
// Creating a File instance
File jsonDataInFile = new File("src/test/resources/Payloads/AuthPayload.xml");
//GIVEN
RestAssured
.given()
.baseUri("https://restful-booker.herokuapp.com/auth")
// Since I am passing payload as xml. Anyway it is optional as Rest Assured automatically identifies.
.contentType(ContentType.XML)
.body(jsonDataInFile)
// WHEN
.when()
.post()
// THEN
.then()
.assertThat()
.statusCode(200);
}
You can clone/download example repo here.
If you have any doubt, feel free to comment below.If you like my posts, please like, comment, share and subscribe.#ThanksForReading
#HappyLearning
