该文章参考了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());