Java的HttpURLConnection类post带参

时间:2021-04-03 21:09:02
package an;

import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  
import java.net.HttpURLConnection;  
import java.net.URL;
import java.util.HashMap;  
import java.util.Map.Entry;

import org.htmlparser.Parser;
import org.htmlparser.beans.StringBean;
import org.htmlparser.util.ParserException;  
  
public class HttpUtil {  
  
    public String http(String url, HashMap<String, String> params) throws ParserException {  
        URL u = null;  
        HttpURLConnection con = null;  
        // 构建请求参数  
        StringBuffer sb = new StringBuffer();  
        if (params != null) {  
            for (Entry<String, String> e : params.entrySet()) {  
                sb.append(e.getKey());  
                sb.append("=");  
                sb.append(e.getValue());  
                sb.append("&");  
            }  
            //sb.substring(0, sb.length() - 1);
            sb=sb.deleteCharAt(sb.length() - 1);
        }  
        //System.out.println("send_url:" + url);  
        //System.out.println("send_data:" + sb.toString());  
        // 尝试发送请求  
        try {  
            u = new URL(url);  
            con = (HttpURLConnection) u.openConnection();  
            //// POST 只能为大写,严格限制,post会不识别  
            con.setRequestMethod("POST");  
            con.setDoOutput(true);  
            con.setDoInput(true);  
            con.setUseCaches(false);  
            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");  
            OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8");  
            osw.write(sb.toString());  
            osw.flush();  
            osw.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            if (con != null) {  
                con.disconnect();  
            }  
        }  
  
        // 读取返回内容  
        StringBuffer buffer = new StringBuffer();  
        try {  
            //一定要有返回值,否则无法把请求发送给server端。  
            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));  
            String temp;  
            while ((temp = br.readLine()) != null) {  
                buffer.append(temp);  
                buffer.append("\n");  
            } 
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        //用parser解析输出内容
        StringBean sBean = new StringBean ();  
        sBean.setLinks (false);//设置不需要得到页面所包含的链接信息    
        sBean.setReplaceNonBreakingSpaces(true);//设置将不间断空格由正规空格所替代    
        sBean.setCollapse(true);//设置将一序列空格由一个单一空格所代替    
        Parser parser = new Parser();  
        parser.setInputHTML(buffer.toString());  
        parser.reset ();  
        parser.visitAllNodesWith (sBean);  
        String text = sBean.getStrings (); 
        return text;  
    }  
    
    public static void main(String[]args) throws ParserException{
    	HashMap<String, String> parames = new HashMap<String, String>();  
        parames.put("usrname", "my");  
        parames.put("password", "123");  
        HttpUtil hu=new HttpUtil();
        String ret=hu.http("http://mail.163.com/", parames);  
        System.out.println(ret);
    }
  
}