LZ在项目遇到需要测试远程地址是否连通的需求,研究了一下,终于搞定。与大家分享下。
需用用到2个jar包(httpclient-4.3.1.jar和httpcore-4.3.jar),导入web工程lib目录下可以。jar包可在官网http://hc.apache.org/downloads.cgi 下载,另外可以下载源码包,里面含有许多经典例子,都可以参考和学习。
package com.williamwu.service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class httpClientTest {
/**
*
* 测试url连通性,以及取得content
*
* @author WilliamWu
* @since 2013-11-27
* @param 测试的URL
* @return 返回请求内容
* */
public static String connectedTest(String url) throws IOException
{
//
CloseableHttpClient httpClient = HttpClients.createDefault();
StringBuffer content = new StringBuffer();
try
{
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = httpClient.execute(httpGet);
// 输出返回状态码 成功返回:HTTP/1.1 200 OK,
// 判断字符串中是否含有“200”即可表示测试连接成功
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
if(null == entity)
{
return "";
}
InputStream in = entity.getContent();
try
{
BufferedReader buffer = new BufferedReader(new InputStreamReader(in, "utf-8"));
String line = null;
while(null != (line = buffer.readLine()))
{
content.append(line);
}
}
finally
{
response.close();
in.close();
}
}
finally
{
httpClient.close();
}
return content.toString();
}
public static void main(String[] args) {
try {
System.out.println(connectedTest("http://www.csdn.net"));
} catch (IOException e) {
e.printStackTrace();
}
}
}