package cc.mrbird.febs.pay.util; import javax.net.ssl.HttpsURLConnection; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; public class HttpRequest { public static final String SEND_POST = "POST"; public static final String SEND_GET = "GET"; private HttpRequest() { } public static HttpRequest createHttpRequest() { return new HttpRequest(); } public HttpResponse sendHttpGet(String urlString, Map params) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); response.setContentType(urlConnection.getContentType()); response.setContentLength(urlConnection.getContentLength()); response.setFileName(urlConnection.getRequestProperty("filename")); return response; } public HttpResponse sendHttpPost(String urlString, Map params, String filePath, String contentType) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); File file = new File(filePath); urlConnection.setRequestProperty("Connection", "Keep-Alive"); urlConnection.setRequestProperty("Charset", "UTF-8"); String BOUNDARY = "----------" + System.currentTimeMillis(); urlConnection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); StringBuilder sb = new StringBuilder(); sb.append("--"); sb.append(BOUNDARY); sb.append("\r\n"); sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"\r\n"); sb.append("Content-Type:application/octet-stream\r\n\r\n"); byte[] head = sb.toString().getBytes("utf-8"); OutputStream out1 = new DataOutputStream(urlConnection.getOutputStream()); out1.write(head); DataInputStream in1 = new DataInputStream(new FileInputStream(file)); int bytes = 0; byte[] bufferOut = new byte[1024]; while ((bytes = in1.read(bufferOut)) != -1) { out1.write(bufferOut, 0, bytes); } in1.close(); byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8"); out1.write(foot); out1.flush(); out1.close(); FileInputStream in = new FileInputStream(file); OutputStream out = urlConnection.getOutputStream(); byte[] buf = new byte[1024]; int hasRead = 0; while ((hasRead = in.read(buf)) > 0) { out.write(buf, 0, hasRead); } in.close(); out.flush(); out.close(); HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); return response; } public HttpResponse sendHttpsGet(String urlString, Map params) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); response.setContentType(urlConnection.getContentType()); response.setContentLength(urlConnection.getContentLength()); return response; } public HttpResponse sendHttpsPost(String urlString, Map params, String sendData) throws IOException { if (params != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : params.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append((String) params.get(key)); i++; } urlString = urlString + param; } URL url = new URL(urlString); HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); urlConnection.setRequestMethod("POST"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); if (sendData != null) { urlConnection.getOutputStream().write(sendData.getBytes("utf-8")); urlConnection.getOutputStream().flush(); urlConnection.getOutputStream().close(); } HttpResponse response = new HttpResponse(); response.setInputStream(urlConnection.getInputStream()); response.setContentType(urlConnection.getContentType()); response.setContentLength(urlConnection.getContentLength()); return response; } }