`
OpenMind
  • 浏览: 177376 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用Java模拟Http请求

阅读更多
1),利用httpclient4.× 写一个http的客户端,模拟浏览器请求,
public void post(List<NameValuePair> payload) throws  Exception{  
        HttpPost post = new HttpPost(uri);  
        HttpEntity result = null;  
        try {  
            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(payload,  
                    charset);  
            post.setEntity(entity);  
            if (LOG.isDebugEnabled()) {  
                LOG.debug("sending:" + payload);  
            }  
  
            HttpResponse response = _httpClient.execute(post);  
            StatusLine statusLine = response.getStatusLine();  
            if (statusLine.getStatusCode() != HttpStatus.SC_OK) {  
                result = response.getEntity();  
                StringBuilder msg = new StringBuilder();  
                msg.append("http response with code "  
                        + statusLine.getStatusCode());  
                msg.append("\n");  
                msg.append("post request: " + post.getURI());  
                msg.append("\n");  
                msg.append(statusLine.getReasonPhrase());  
                if (result != null) {  
                    msg.append("\n\n");  
                    msg.append(EntityUtils.toString(result, "UTF-8"));  
                    msg.append("\n\n");  
                }  
                throw new UmcException(msg.toString());  
            }  
            if (response.getEntity() != null) {  
                BufferedReader reader = new BufferedReader(  
                        new InputStreamReader(  
                                response.getEntity().getContent(), "UTF-8"));  
                String line = null;  
                while ((line = reader.readLine()) != null) {  
                    if (line.indexOf("success") < 0)  
                        System.out.println(line);  
                }  
            }  
        } finally {  
            if (result != null)  
                try {  
                    EntityUtils.consume(result);  
                } catch (IOException e) {  
                }  
            post.abort();  
        }  
    }  


uri是请求的地址,charset是编码“UTF-8”,List<NameValuePair>就是表单参数集
ClientConnectionManager     ccManager = new ThreadSafeClientConnManager();  
HttpClient      _httpClient = new DefaultHttpClient(ccManager); 


2) 采用JDK的HttpConnection构造http客户端,
////发送  
    HttpURLConnection conn = null;  
    try {  
        URL url = new URL(Your_URL);  
        conn = (HttpURLConnection) url.openConnection();  
        conn.setRequestMethod("POST");  
        conn.setRequestProperty("Content-Type",  
                "application/x-www-form-urlencoded");  
        conn.setUseCaches(false);  
        conn.setDoOutput(true);  
        OutputStreamWriter osw = new OutputStreamWriter(  
                conn.getOutputStream());  
        StringBuffer sb = new StringBuffer();  
        addPair(sb, "p1", "p1value");  
        addPair(sb, "p2", "p2value");  
        osw.write(sb.substring(0, sb.length() - 1));  
        osw.flush();  
        BufferedReader reader = new BufferedReader(  
                new InputStreamReader(conn.getInputStream()));  
        String line = null;  
        sb = new StringBuffer();  
        while ((line = reader.readLine()) != null) {  
            sb.append(line);  
        }  
        line = sb.toString();  
        // 处理返回的字符串line  
        return;  
        ////  
    } catch (IOException e) {  
        // handle e  
    } finally {  
        if (conn != null)  
            conn.disconnect();  
    }///发送结束  

addPair方法:
public static void addPair(StringBuffer sb, String name, String value) {  
    if (value == null) {  
        return;  
    }  
    sb.append(name);  
    sb.append("=");  
    sb.append(value);  
    sb.append("&");  
}  


分享到:
评论
1 楼 飞龙8805 2013-03-07  
Java模拟HTTP的Get和Post请求(增强)
http://lavasoft.blog.51cto.com/62575/175911

相关推荐

Global site tag (gtag.js) - Google Analytics