Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 3655

Spring Boot RestClient does not work when sending an object

$
0
0

I tried sending a POST request using Spring Boot 3 Http RestClient. The request fails when sending and object and passes when sending a string.

Works with string code:

    private final String roleBody = """    {"ApplicationID":"XXXX","RolesValues":["ROLE"],"retainPreviousRoles":"true"}""";        ResponseEntity<ApiResponse> result = restClient            .post()            .uri("dev/v1/app-roles")            .accept(APPLICATION_JSON)            .contentType(APPLICATION_JSON)            .body(addAppRole)            .body(roleBody)            .retrieve()            .toEntity(ApiResponse.class);

Debug output from turning on http client logging:

User-Agent: Apache-HttpClient/5.2.3 (Java/17.0.11)"POST /dev/v1/app-roles HTTP/1.1[\r][\n]""Content-Type: application/json[\r][\n]""Accept: application/json[\r][\n]""Accept-Encoding: gzip, x-gzip, deflate[\r][\n]""Content-Length: 128[\r][\n]""Host: appregapi.bpglobal.com[\r][\n]""Connection: keep-alive[\r][\n]""User-Agent: Apache-HttpClient/5.2.3 (Java/17.0.11)[\r][\n]""[\r][\n]""{"ApplicationID":"XXXX","RolesValues":["ROLE"],"retainPreviousRoles":"true"}[\n]""HTTP/1.1 200 OK[\r][\n]""Transfer-Encoding: chunked[\r][\n]""Content-Type: application/json; charset=utf-8[\r][\n]""Content-Encoding: gzip[\r][\n]""Vary: Accept-Encoding[\r][\n]""Date: Sat, 08 Jun 2024 20:22:09 GMT[\r][\n]""[\r][\n]""44[\r][\n]"

Fails when an object code:

        AddAppRole addAppRole = AddAppRole.builder()            .applicationId("XXXX")            .rolesValues(List.of("ROLE"))            .retainPreviousRoles("true")            .build();        ResponseEntity<ApiResponse> result = restClient            .post()            .uri("dev/v1/app-roles")            .accept(APPLICATION_JSON)            .contentType(APPLICATION_JSON)            .body(addAppRole)            .retrieve()            .toEntity(ApiResponse.class);

Debug output from turning on http client logging:

User-Agent: Apache-HttpClient/5.2.3 (Java/17.0.11)"POST /dev/v1/app-roles HTTP/1.1[\r][\n]""Content-Type: application/json[\r][\n]""Accept: application/json[\r][\n]""Accept-Encoding: gzip, x-gzip, deflate[\r][\n]""Transfer-Encoding: chunked[\r][\n]""Host: appregapi.bpglobal.com[\r][\n]""Connection: keep-alive[\r][\n]""User-Agent: Apache-HttpClient/5.2.3 (Java/17.0.11)[\r][\n]""[\r][\n]""7f[\r][\n]""{"ApplicationID":"XXXX","RolesValues":["ROLE"],"retainPreviousRoles":"true"}[\r][\n]""0[\r][\n]""[\r][\n]""HTTP/1.1 403 Forbidden[\r][\n]""Transfer-Encoding: chunked[\r][\n]""Content-Type: application/json; charset=utf-8[\r][\n]""Date: Sat, 08 Jun 2024 20:23:35 GMT[\r][\n]""[\r][\n]""46[\r][\n]""{[\r][\n]"HTTP/1.1 403 Forbidden

There appear differences in the payloads?

Any idea why the second version is adding:7f \r \nand0 \r \n

The different encoding is breaking the request.


Viewing all articles
Browse latest Browse all 3655

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>