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:-

Sending a .json file as a payload
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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]+$")); } } |
Sending a .xml file as a payload
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@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
You can find all Selenium related post here.
You can find all API manual and automation related posts here.
You can find frequently asked Java Programs here.
Thank you, able to run it, just to share with everyone, when we pass as XML, the output we get as
{
“reason”: “Bad credentials”
}
can you please let me know how can I pass xml attribute value like for username attribute,you have admin value which I want to pass via testdata as variable (meaning xml format is same but value getting change based on requimrnt )…my testdata file is reading data in json form.