欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

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;      
  }      
}