1 2 3 4 5 | < dependency > < groupId >com.google.code.gson</ groupId > < artifactId >gson</ artifactId > < version >2.8.0</ version > </ dependency > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.logging.Level; import java.util.logging.Logger; import com.google.gson.Gson; public class HttpRequestSender { private static final Logger LOGGER = Logger.getLogger(HttpRequestSender. class .getName()); public static int postJsonData(String url, Object data, int connectionTimeout, int readTimeout, StringBuffer response) { int responseCode = 0 ; Gson gson = new Gson(); StringBuilder sb = new StringBuilder(); sb.append( "data=" ).append(gson.toJson(data)); long startTime = System.currentTimeMillis(); try { URL urlObj = new URL(url); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); conn.setConnectTimeout(connectionTimeout); conn.setReadTimeout(readTimeout); conn.setRequestMethod( "POST" ); conn.setInstanceFollowRedirects( false ); conn.setRequestProperty( "Content-Type" , "application/x-www-form-urlencoded" ); conn.setRequestProperty( "charset" , "UTF-8" ); byte [] postData = sb.toString().getBytes( "UTF-8" ); conn.setRequestProperty( "content-length" , postData.length + "" ); conn.setDoOutput( true ); try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) { wr.write(postData); wr.flush(); } responseCode = conn.getResponseCode(); if (response != null ) { try (BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream()))) { String line = reader.readLine(); while (line != null ) { response.append(line); line = reader.readLine(); } } } } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error while posting data " + String.valueOf(data) + " to " + url, e); } LOGGER.log(Level.INFO, "Posted {0} to {1} took {2} ms" , new Object[] { String.valueOf(data), url, (System.currentTimeMillis() - startTime) }); return responseCode; } } |