使用HttpURLConnection开发自动发送Get、Post请求并获取响应

该文章参考了yymmiinngg【http://yymmiinngg.javaeye.com/blog/154258】,表示感谢!

代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *请求对象
 * @author <a href="heroking2000@163.com">Hero King</a>
 */
public class HttpRequester {

    private String _encoding = Charset.defaultCharset().name();
   
    /**
     *  发送Get请求
     * @param urlString
     * @return
     */
    public HttpResponser sendGet(String urlString)
    {
        return send(urlString, "GET", null);
    }
    /**
     * 发送Post请求
     * @param urlString
     * @param data
     * @return
     */
    public HttpResponser sendPost(String urlString, String data)
    {
        return send(urlString, "POST", data);
    }
    /**
     * 发送请求
     * @param urlString
     * @param method
     * @param data
     * @return
     */
    public HttpResponser send(String urlString, String method, String data)
    {
        HttpURLConnection urlConnection = null;
        HttpResponser httpResponser = new HttpResponser();
        try {
           
            URL url = new URL(urlString);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod(method);
            urlConnection.setDoOutput(true);
            urlConnection.setDoInput(true);
            urlConnection.setUseCaches(false);
           
            if ("POST".equals(method))
            {
                urlConnection.getOutputStream().write(data.getBytes(this._encoding));
                urlConnection.getOutputStream().flush();
                urlConnection.getOutputStream().close();
            }
           
            InputStream in = urlConnection.getInputStream();  
            BufferedReader bufferedReader = new BufferedReader(  
                    new InputStreamReader(in));  
            StringBuffer temp = new StringBuffer();  
            String line = bufferedReader.readLine();  
            while (line != null) {  
                temp.append(line).append("/r/n");  
                line = bufferedReader.readLine();  
            }  
            bufferedReader.close();  
   
            String ecod = urlConnection.getContentEncoding();  
            if (ecod == null)
            {
                ecod = this._encoding;  
            }
   
            httpResponser.setUrl(urlString);  
            httpResponser.setContent(new String(temp.toString().getBytes(), ecod));  
            httpResponser.setEncoding(ecod);  
        } catch (IOException ex) {
            Logger.getLogger(HttpRequester.class.getName()).log(Level.SEVERE, null, ex);
        } finally {  
            if (urlConnection != null)  
                urlConnection.disconnect();  
        }  

        return httpResponser;
    }
    /**
     * 获取请求编码
     * @return
     */
    public String GetEncoding()
    {
        return this._encoding;
    }
    /**
     * 设置请求编码
     * @param encoding
     */
    public void setEncoding(String encoding)
    {
        this._encoding = encoding;
    }
}

/**
 * 响应对象
 * @author <a href="heroking2000@163.com">Hero King</a>
 */
public class HttpResponser {
   
    private String _url = null; //链接
    private String _encoding = null;//编码
    private String _content = null;//内容
   
    public String getContent() {
        return _content;
    }

    public void setContent(String content) {
        this._content = content;
    }

    public String getEncoding() {
        return _encoding;
    }

    public void setEncoding(String encoding) {
        this._encoding = encoding;
    }

    public String getUrl() {
        return _url;
    }

    public void setUrl(String url) {
        this._url = url;
    }
}

测试代码:

 HttpRequester requester = new HttpRequester();
        requester.setEncoding("utf-8");
        HttpResponser responser = requester.sendGet("http://www.72ec.com/");
        System.out.print(responser.getContent());

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值