jetty client 与apache http client的实现、分析
谈到httpclient的话,只要会想到apache的httpclient和jetty的httpclient,但是apache的httpclient3和4之间又有区别,通过学些,最终总结了三种方式使用HttpClient,分别为使用httpclient3,httpclient4,jetty的httpclient,下面分别来贴代码:
第1种:使用的jar包为commons-httpclient-3.1,只需要一个jar包即可
这里使用的是GetMethod,与httpcleint4有区别
public static void main(String[] args) {
HttpClient httpClient = new HttpClient();//打开窗口
GetMethod getMethod = new GetMethod("http://www.baidu.com/"); //输入网址
try {
int statusCode = httpClient.executeMethod(getMethod);//按下回车运行,得到返回码
System.out.println(statusCode);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + getMethod.getStatusLine());
}
//读取内容
byte[] responseBody = getMethod.getResponseBody();//得到返回的内容
//处理内容
System.out.println(new String(responseBody));
} catch (Exception e) {
e.printStackTrace();
}finally{
getMethod.releaseConnection();
}
}
第二种,使用的jar包为httpclient4,需要的jar包由httpclient3分成了多个,自己去下载
注意这里使用的是HttpGet,而httpclient3使用的是GetMethod
public static void main(String[] args) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://www.baidu.com");
// 打印请求信息
System.out.println(httpGet.getRequestLine());
try {
// 发送请求,返回响应
HttpResponse response =httpClient.execute(httpGet);
// 打印响应信息
System.out.println(response.getStatusLine());
HttpEntity httpEntity = response.getEntity();
System.out.println( httpEntity.getContentType());
System.out.println(httpEntity.getContentLength());
System.out.println(EntityUtils.getContentCharSet(httpEntity));
InputStream in = httpEntity.getContent();//可以得到请求的内容了
..... //这里可以自由发挥了
} catch (Exception e) {
}
} 第三种:使用jetty的httpclient,jar在jetty包里面的lib包里面
可以分为同步和异步两种
异步:
public static void main(String[] args) {
HttpClient client = new HttpClient();
client.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);//还可以进行其他的配置
try {
client.start();
} catch (Exception e) {
e.printStackTrace();
}
ContentExchange exchange = new ContentExchange() //exchange,里面放置回调方法
{
protected void onResponseComplete() throws IOException
{
super.onResponseComplete();
String responseContent = this.getResponseContent();
System.out.println(responseContent);
........ //可以对返回结果自由发挥了
}
};
exchange.setMethod("GET");
exchange.setURL("http://www.baidu.com");
try {
client.send(exchange); //client发送消息
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 同步:
HttpClient httpClient = new HttpClient();
...........................//同样对client进行配置
try {
httpClient.start();
ContentExchange contentExchange = new ContentExchange();
httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
contentExchange.setURL("http://www.baidu.com");
contentExchange.setTimeout(30000);
httpClient.send(contentExchange); //client发送
contentExchange.waitForDone(); //同步等待结果返回
System.err.println("Response status: "+contentExchange.getResponseStatus());
System.out.println("Response content:"+contentExchange.getResponseContent());
} catch (Exception e) {
e.printStackTrace();
} 希望对初学者有所帮助!!!!!
页:
[1]