You seem to be confusing the application/x-www-form-urlencoded
and multipart/form-data
content types. When sending a multipart request, you are using multipart/form-data
, in which case you don't need to URL encode the content. Just set the text directly
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
multipartEntityBuilder.addTextBody("userId", "someIdWith@url$encodable<>characters");