From d962fe6f2b14d5859889a7b455d46b2c720a5e6d Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Tue, 31 Mar 2020 22:01:19 -0400 Subject: [PATCH] support HttpUtil.post/put with streamed response --- .../org/cobbzilla/util/http/HttpUtil.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/org/cobbzilla/util/http/HttpUtil.java b/src/main/java/org/cobbzilla/util/http/HttpUtil.java index 8f81b1c..eae3325 100644 --- a/src/main/java/org/cobbzilla/util/http/HttpUtil.java +++ b/src/main/java/org/cobbzilla/util/http/HttpUtil.java @@ -80,6 +80,26 @@ public class HttpUtil { return urlConnection.getInputStream(); } + public static InputStream post (String urlString, InputStream data, Map headers, Map headers2) throws IOException { + return upload(urlString, POST, data, headers, headers2); + } + + public static InputStream put (String urlString, InputStream data, Map headers, Map headers2) throws IOException { + return upload(urlString, PUT, data, headers, headers2); + } + + public static InputStream upload (String urlString, String method, InputStream data, Map headers, Map headers2) throws IOException { + final URL url = new URL(urlString); + final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); + urlConnection.setRequestMethod(method); + if (headers != null) addHeaders(urlConnection, headers); + if (headers2 != null) addHeaders(urlConnection, headers2); + urlConnection.setDoInput(true); + final OutputStream upload = urlConnection.getOutputStream(); + IOUtils.copyLarge(data, upload); + return urlConnection.getInputStream(); + } + public static void addHeaders(HttpURLConnection urlConnection, Map headers) { for (Map.Entry h : headers.entrySet()) { urlConnection.setRequestProperty(h.getKey(), h.getValue());