I am using the
HttpRequest available on
java.net.http. I have successfully sent some GET and POST requests, but I have no clue about how to send a PUT/POST request with
HttpRequest dataRequest = HttpRequest.newBuilder() .header("accept", "*/*") .header("Content-Type", "multipart/form-data") // .POST() ?? .uri(URI.create(DATA_URL) .build();
The curl equivalent of this request would be something like:
curl -X PUT "https://www.example.com/data" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "[email protected];type=audio/wav"
Should I use some kind of
BodyPublishers in the
PUT() method in order to achieve that? Any clue?
Multipart/form-data is not supported out of the box by the HttpClient API yet.
In JDK 16 there is a new
HttpRequest.BodyPublishers.concat(BodyPublisher...) method that can be used to help build a request body built from the concatenation of bytes coming from heterogeneous sources.
But you would have to manually compose all the different parts, and handle base64 encoding when/if that’s needed.
You could also try out methanol