标签:jetty client httpclient apache
谈到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(); }
希望对初学者有所帮助!!!!!
jetty client 与apache http client的实现、分析,布布扣,bubuko.com
jetty client 与apache http client的实现、分析
标签:jetty client httpclient apache
原文地址:http://5148737.blog.51cto.com/5138737/1413767