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