Skip to content

Commit d6306d8

Browse files
hfgbarrigaswing328
authored andcommitted
[JAVA][Webclient]fix select body for url encoded media type. (#2686)
* fix select body for url encoded media type. * run bin.
1 parent c797073 commit d6306d8

File tree

2 files changed

+28
-4
lines changed
  • modules/openapi-generator/src/main/resources/Java/libraries/webclient
  • samples/client/petstore/java/webclient/src/main/java/org/openapitools/client

2 files changed

+28
-4
lines changed

modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,20 @@ public class ApiClient {
472472
* @return Object the selected body
473473
*/
474474
protected BodyInserter<?, ? super ClientHttpRequest> selectBody(Object obj, MultiValueMap<String, Object> formParams, MediaType contentType) {
475-
boolean isForm = MediaType.MULTIPART_FORM_DATA.isCompatibleWith(contentType) || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType);
476-
return isForm ? BodyInserters.fromMultipartData(formParams) : (obj != null ? BodyInserters.fromObject(obj) : null);
475+
if(MediaType.APPLICATION_FORM_URLENCODED.equals(contentType)) {
476+
MultiValueMap<String, String> map = new LinkedMultiValueMap();
477+
478+
formParams
479+
.toSingleValueMap()
480+
.entrySet()
481+
.forEach(es -> map.add(es.getKey(), (String) es.getValue()));
482+
483+
return BodyInserters.fromFormData(map);
484+
} else if(MediaType.MULTIPART_FORM_DATA.equals(contentType)) {
485+
return BodyInserters.fromMultipartData(formParams);
486+
} else {
487+
return obj != null ? BodyInserters.fromObject(obj) : null;
488+
}
477489
}
478490

479491
/**

samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/ApiClient.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -468,8 +468,20 @@ public MediaType selectHeaderContentType(String[] contentTypes) {
468468
* @return Object the selected body
469469
*/
470470
protected BodyInserter<?, ? super ClientHttpRequest> selectBody(Object obj, MultiValueMap<String, Object> formParams, MediaType contentType) {
471-
boolean isForm = MediaType.MULTIPART_FORM_DATA.isCompatibleWith(contentType) || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType);
472-
return isForm ? BodyInserters.fromMultipartData(formParams) : (obj != null ? BodyInserters.fromObject(obj) : null);
471+
if(MediaType.APPLICATION_FORM_URLENCODED.equals(contentType)) {
472+
MultiValueMap<String, String> map = new LinkedMultiValueMap();
473+
474+
formParams
475+
.toSingleValueMap()
476+
.entrySet()
477+
.forEach(es -> map.add(es.getKey(), (String) es.getValue()));
478+
479+
return BodyInserters.fromFormData(map);
480+
} else if(MediaType.MULTIPART_FORM_DATA.equals(contentType)) {
481+
return BodyInserters.fromMultipartData(formParams);
482+
} else {
483+
return obj != null ? BodyInserters.fromObject(obj) : null;
484+
}
473485
}
474486

475487
/**

0 commit comments

Comments
 (0)