Java 模拟并发访问
程序员文章站
2022-03-10 10:08:24
...
类:NetUtils.java
import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; import java.util.Properties; public class NetUtils { public static final String CHARACTER_ENCODING = "UTF-8"; public static final String PATH_SIGN = "/"; public static final String METHOD_POST = "POST"; public static final String METHOD_GET = "GET"; public static final String CONTENT_TYPE = "Content-Type"; /** * 以POST方式向指定地址发送数据包请求,并取得返回的数据包 * * @param urlString * @param requestData * @return 返回数据包 * @throws Exception */ public static byte[] requestPost(String urlString, byte[] requestData) throws Exception { Properties requestProperties = new Properties(); requestProperties.setProperty(CONTENT_TYPE, "application/octet-stream; charset=utf-8"); return requestPost(urlString, requestData, requestProperties); } /** * 以POST方式向指定地址发送数据包请求,并取得返回的数据包 * * @param urlString * @param requestData * @param requestProperties * @return 返回数据包 * @throws Exception */ public static byte[] requestPost(String urlString, byte[] requestData, Properties requestProperties) throws Exception { byte[] responseData = null; HttpURLConnection con = null; try { URL url = new URL(urlString); con = (HttpURLConnection) url.openConnection(); //设置请求属性 if ((requestProperties != null) && (requestProperties.size() > 0)) { for (Map.Entry<Object, Object> entry : requestProperties.entrySet()) { String key = String.valueOf(entry.getKey()); String value = String.valueOf(entry.getValue()); con.setRequestProperty(key, value); } } con.setRequestMethod(METHOD_POST); // 置为POST方法 con.setDoInput(true); // 开启输入流 con.setDoOutput(true); // 开启输出流 // 如果请求数据不为空,输出该数据。 if (requestData != null) { DataOutputStream dos = new DataOutputStream(con.getOutputStream()); dos.write(requestData); dos.flush(); dos.close(); } int length = con.getContentLength(); // 如果回复消息长度不为-1,读取该消息。 if (length != -1) { DataInputStream dis = new DataInputStream(con.getInputStream()); responseData = new byte[length]; dis.readFully(responseData); dis.close(); } } catch (Exception e) { throw e; } finally { if (con != null) { con.disconnect(); con = null; } } return responseData; } }