模拟发起http请求类库 org.apache.commons.httpclient

JAVA模拟提交http请求的类库:org.apache.commons.httpclient

HttpClient简单使用(附带小样例) 
入门: 
1、首先导入3个jar包,httpClient-3.0.1.jar,commons_codec-1.3.jar,commons-logging.jar. 

2、客户端程序如下: 

import org.apache.commons.httpclient.*; 
import org.apache.commons.httpclient.methods.*; 

HttpClient hc = new HttpClient(); 
     PostMethod hm = new PostMethod(url); 
     hm.addParameter(name,value); 
  
     int statusCode = -1; 
     String result = ""; 
     try{ 
      hm.getResponseBodyAsString(); 
      statusCode = hc.executeMethod(hm); 
   
      if(hm.getResponseBodyAsString()!=null){ 
       result = hm.getResponseBodyAsString(); 
      } 
     }catch(HttpException e1){ 
      e1.printStackTrace(); 
     }catch(java.io.IOException e2){ 
      e2.printStackTrace(); 
     } 

     hm.releaseConnection(); 

3、服务器端: 

post方式接受参数,处理后out.println数据。 

--------------------------------------------------- 

HttpClient获取其他页面数据: 

导入包: 

import org.apache.commons.logging.Log; 

import org.apache.commons.logging.LogFactory; 

import org.apache.commons.httpclient.*; 

import org.apache.commons.httpclient.methods.*; 


代码: 

HttpClient hc = new HttpClient(); 

HttpMethod hm = new GetMethod("http://www.sina.com.cn"); 

hm.addRequestHeader("Content-Type","text/html;charset=utf-8"); //这里设置字符编码,避免乱码   


int statusCode = -1; 

byte[] result = null; 

try{ 

       statusCode = hc.executeMethod(hm); 

       if(statusCode != HttpStatus.SC_OK){//判断返回 

              System.out.println("get failure!"); 

              return; 

       } 

       if(hm.getResponseBody()!=null){//获取页面数据 

              result = hm.getResponseBody();//hm.getStatusLine()――http状态和请求结果 

       } 

}catch(HttpException e1){ 

       e1.printStackTrace(); 

}catch(java.io.IOException e2){ 

       e2.printStackTrace(); 




hm.releaseConnection(); 


String data = null; 

if(result != null){                 

       data = new String(result,"UTF-8");//字符编码设置 

System.out.println(data.substring(0,500));//测试输出 

       int begin = data.indexOf("product");//获取指定页面某个部分的内容 

       System.out.println(“product:”+begin); 

       if(begin>-1){//输出1000个字符 

              System.out.println(Strings.convertHTML(data.substring(begin,begin+1000))); 

       } 

}      


参考文章:http://lenj.iteye.com/blog/163931



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值