Recently, I was debugging an issue for a teammate where an API was not responding when executed through Java code. Interestingly, the same API worked perfectly:
- From my machine
- From his Postman
- From other systems
But it failed only when triggered via Java using REST Assured.
The Problem
Here’s the request our code was making:
RestAssured.baseURI = "URL";
RestAssured.useRelaxedHTTPSValidation();
Response response = RestAssured.given()
.auth()
.preemptive()
.basic(username, password)
.header("Content-Type", "application/json")
.body(requestBody)
.post(endPoint)
.then()
.extract()
.response();
.
When executing this code:
- No response was returned
- The request remained stuck in execution
- Debugging didn’t reveal much
The Root Cause
After about an hour of debugging and going through documentation, we discovered something subtle:
👉 By default, REST Assured automatically appends a charset to the Content-Type header.
This behavior can sometimes cause issues if the server is not expecting it.
The Fix
We resolved the issue by disabling the automatic charset addition using EncoderConfig:
given()
.config(RestAssured.config()
.encoderConfig(encoderConfig()
.appendDefaultContentCharsetToContentTypeIfUndefined(false)));
Additional Configuration (Optional)
You can also explicitly define charset behavior:
RestAssured.config = RestAssured.config()
.encoderConfig(encoderConfig()
.defaultContentCharset("US-ASCII"));
Why This Works
-
If no charset is specified:
-
Default content charset →
ISO-8859-1 -
Query parameter charset →
UTF-8
-
Default content charset →
- Some servers reject or mishandle unexpected charset values
- Disabling or controlling this behavior resolves compatibility issues
Interesting Observation
After applying the fix, the API started responding correctly.
However, when we later removed the configuration, it still worked.
We didn’t verify server logs, but it’s likely that:
- The responses were being served from cache
- Or the server state had changed after initial successful requests
Key Takeaways
- REST Assured silently adds charset → can break APIs
- Always compare working tools like Postman vs code behavior
-
When debugging API issues:
- Check headers carefully
- Look for hidden defaults
Conclusion
Sometimes, the issue isn’t with your API or logic—but with default configurations you didn’t even know existed.
A small tweak in REST Assured configuration can save hours of debugging.

0 Comments