java 模拟post请求

来源:互联网 发布:net snmp windows编程 编辑:程序博客网 时间:2024/06/05 14:10
  1. package com.gt.util;  
  2.   
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.DataOutputStream;  
  5. import java.io.InputStream;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8. import java.net.URLEncoder;  
  9. import java.util.HashMap;  
  10. import java.util.Map;  
  11.   
  12. import net.sf.json.JSONObject;  
  13.   
  14. import org.springframework.stereotype.Component;  
  15.   
  16. public class BaseHttpHelper {  
  17.       
  18.     /** 
  19.      * ReadStream 
  20.      * @param InputStream 
  21.      * @return byte[] 
  22.      * @throws Exception 
  23.      */  
  24.     protected byte[] readStream(InputStream inStream) throws Exception{  
  25.         ByteArrayOutputStream outSteam = new ByteArrayOutputStream();  
  26.         byte[] buffer = new byte[1024];  
  27.         int len = -1;  
  28.         while( (len = inStream.read(buffer)) != -1){  
  29.             outSteam.write(buffer, 0, len);  
  30.         }  
  31.         outSteam.close();  
  32.         inStream.close();  
  33.         return outSteam.toByteArray();  
  34.     }  
  35.       
  36.     /** 
  37.      * Post Data 
  38.      * @param path 
  39.      * @param params 
  40.      * @param encode 
  41.      * @param timeout 
  42.      * @return byte[] 
  43.      * @throws Exception 
  44.      */  
  45.     protected byte[] post(String path, Map<String, String> params, String encode, int timeout) throws Exception{  
  46.         byte[] resultBuffer = null;  
  47.         StringBuilder parambuilder = new StringBuilder("");  
  48.         if(params != null && !params.isEmpty()) {  
  49.             for(Map.Entry<String, String> entry : params.entrySet()){  
  50.                 parambuilder.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), encode)).append("&");  
  51.             }  
  52.             parambuilder.deleteCharAt(parambuilder.length()-1);  
  53.         }  
  54.         byte[] data = parambuilder.toString().getBytes();  
  55.         URL url = new URL(path);  
  56.         HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
  57.         conn.setDoOutput(true);  
  58.         conn.setUseCaches(false);  
  59.         conn.setConnectTimeout(timeout * 1000);  
  60.         conn.setReadTimeout(timeout * 1000);  
  61.         conn.setRequestMethod("POST");  
  62.         conn.setRequestProperty("Accept""image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");  
  63.         conn.setRequestProperty("Accept-Language""zh-CN");  
  64. //      conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");  
  65.         conn.setRequestProperty("User-Agent""Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53");  
  66.         conn.setRequestProperty("Content-Type""application/x-www-form-urlencoded");  
  67.         conn.setRequestProperty("Content-Length", String.valueOf(data.length));  
  68.         conn.setRequestProperty("Connection""Keep-Alive");  
  69.         DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());  
  70.         outStream.write(data);  
  71.         outStream.flush();  
  72.         outStream.close();  
  73.         if(conn.getResponseCode() == 200){  
  74.             resultBuffer = readStream(conn.getInputStream());  
  75.         }  
  76.         conn.disconnect();  
  77.         return resultBuffer;  
  78.     }  
  79.       
  80.     public static void main(String[] args) throws Exception {  
  81.         //调用  
  82.         BaseHttpHelper bh = new BaseHttpHelper();  
  83.         Map<String, String> params = new HashMap<String, String>();  
  84.         params.put("type""yuantong");  
  85.         params.put("postid""9999999999");  
  86.         System.out.println(new String(bh.post("http://www.kuaidi100.com/query", params, "UTF-8"5000),"UTF-8"));  
  87.     }  
  88. }  
原创粉丝点击