diff a/test/jdk/java/net/httpclient/MultipartBodyPublisherRawTest.java b/test/jdk/java/net/httpclient/MultipartBodyPublisherRawTest.java --- /dev/null +++ b/test/jdk/java/net/httpclient/MultipartBodyPublisherRawTest.java @@ -0,0 +1,34 @@ + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse.BodyHandlers; +import java.nio.file.Path; + +public class MultipartBodyPublisherRawTest { + + static final String CRLF = "\r\n"; + static final String BOUNDARY = "gc0p4Jq0M2Yt08jU534c0p"; + static final String BOUNDARY_START = "--"; + static final String BOUNDARY_END = "--"; + + public static void main(String... args) throws Exception { + + // # using raw concat only ! + var publisher = HttpRequest.BodyPublishers.concat( + // preamble + HttpRequest.BodyPublishers.ofString(CRLF + BOUNDARY_START + BOUNDARY + CRLF + "Content-Type: text/plain; charset=us-ascii" + CRLF), + HttpRequest.BodyPublishers.ofFile(Path.of("/tmp/xxyy")), + HttpRequest.BodyPublishers.ofString(CRLF + BOUNDARY_START + BOUNDARY + BOUNDARY_END) + // epilogue + ); + + var client = HttpClient.newHttpClient(); + var request = HttpRequest.newBuilder() + .uri(URI.create("http://foo.com/")) + .header("Content-Type", "multipart/mixed; boundary=" + BOUNDARY) + .POST(publisher) + .build(); + client.send(request, BodyHandlers.ofString()); + } +}