get和post的java测试代码,使用httpclient 3.1 Post和Get方法 测试代码

本文介绍了如何使用Apache HttpClient库在Java中实现GET和POST请求,并处理Cookie。通过示例展示了如何构造HttpClient实例、设置请求参数、执行请求、解析响应和处理Cookie。重点在于POST请求的表单数据处理和Cookie的保存与重用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.test;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importorg.apache.commons.httpclient.Cookie;importorg.apache.commons.httpclient.DefaultHttpMethodRetryHandler;importorg.apache.commons.httpclient.Header;importorg.apache.commons.httpclient.HttpClient;importorg.apache.commons.httpclient.HttpException;importorg.apache.commons.httpclient.HttpStatus;importorg.apache.commons.httpclient.NameValuePair;importorg.apache.commons.httpclient.URI;importorg.apache.commons.httpclient.cookie.CookiePolicy;importorg.apache.commons.httpclient.cookie.CookieSpec;importorg.apache.commons.httpclient.methods.GetMethod;importorg.apache.commons.httpclient.methods.PostMethod;importorg.apache.commons.httpclient.params.HttpMethodParams;publicclassHttpWeb {publicstaticString getGetResponse(String url) {

String html="";//构造HttpClient的实例HttpClient httpClient=newHttpClient();//创建GET方法的实例GetMethod getMethod=newGetMethod(url);//使用系统提供的默认的恢复策略getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());try{//执行getMethodintstatusCode=httpClient.executeMethod(getMethod);if(statusCode!=HttpStatus.SC_OK) {

System.err.println("Method failed:"+getMethod.getStatusLine());

}//处理内容html=getMethod.getResponseBodyAsString();

}catch(HttpException e) {//发生致命的异常,可能是协议不对或者返回的内容有问题System.out.println("Please check your provided http address!");

e.printStackTrace();

}catch(IOException e) {//发生网络异常e.printStackTrace();

}finally{//释放连接getMethod.releaseConnection();

}returnhtml;

}publicstaticString getPostResponse(String url)throwsHttpException, IOException {

String html="";

HttpClient httpClient=newHttpClient();

PostMethod postMethod=newPostMethod(url);

postMethod.setRequestHeader("accept","*/*");

postMethod.setRequestHeader("connection","Keep-Alive");

postMethod.setRequestHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");

postMethod.setRequestHeader("Accept-Language","zh-cn,zh;q=0.5");//postMethod.setRequestHeader("Accept-Encoding", "gzip,deflate");//postMethod.setRequestHeader("Content-Type", "text/html;charset=utf-8");//填入各个表单域的值NameValuePair[] data={newNameValuePair("msg","你好") };//将表单的值放入postMethod中postMethod.setRequestBody(data);//执行postMethodintstatusCode=httpClient.executeMethod(postMethod);//HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发//301或者302if(statusCode==HttpStatus.SC_MOVED_PERMANENTLY||statusCode==HttpStatus.SC_MOVED_TEMPORARILY) {//从头中取出转向的地址Header locationHeader=postMethod.getResponseHeader("location");

String location=null;if(locationHeader!=null) {

location=locationHeader.getValue();

System.out.println("The page was redirected to:"+location);

}else{

System.err.println("Location field value is null.");

}returnhtml;

}//html = postMethod.getResponseBodyAsString();System.out.println(postMethod.getResponseCharSet());//byte[] responseBody = postMethod.getResponseBody();BufferedReader in=newBufferedReader(newInputStreamReader(postMethod.getResponseBodyAsStream(), postMethod

.getResponseCharSet()));

StringBuffer sb=newStringBuffer();intchari;while((chari=in.read())!=-1) {

sb.append((char) chari);

}

html=sb.toString();

in.close();

postMethod.releaseConnection();

CookieSpec cookiespec=CookiePolicy.getDefaultSpec();

postMethod.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

URI uri=postMethod.getURI();

Cookie[] cookies=cookiespec.match(uri.getHost(), uri.getPort()==-1?80: uri.getPort(),"/",false,

httpClient.getState().getCookies());for(Cookie cookie : cookies) {

System.out.println(cookie.getName());

System.out.println(cookie.getValue());

}

postMethod.setURI(newURI("http://www.ssread.com/zt/writecookie2.jsp",false));

httpClient.executeMethod(postMethod);

BufferedReader in2=newBufferedReader(newInputStreamReader(postMethod.getResponseBodyAsStream(), postMethod

.getResponseCharSet()));

StringBuffer sb2=newStringBuffer();intchari2;while((chari2=in2.read())!=-1) {

sb2.append((char) chari2);

}

html=sb2.toString();

in2.close();

postMethod.releaseConnection();//PostMethod postMethod2 = new PostMethod("http://www.ssread.com/zt/writecookie2.jsp");////httpClient.getState().addCookies(cookies);//httpClient.executeMethod(postMethod2);//BufferedReader in2 = new BufferedReader(new InputStreamReader(postMethod2.getResponseBodyAsStream(),//postMethod2.getResponseCharSet()));//StringBuffer sb2 = new StringBuffer();//int chari2;//while ((chari2 = in2.read()) != -1) {//sb2.append((char) chari2);//}//html = sb2.toString();//in2.close();//postMethod2.releaseConnection();returnhtml;

}publicstaticclassUTF8PostMethodextendsPostMethod {publicUTF8PostMethod(String url) {super(url);

}

@OverridepublicString getRequestCharSet() {returnsuper.getRequestCharSet();//return "UTF-8";}

}publicstaticvoidmain(String[] args)throwsHttpException, IOException {

System.out.println(HttpWeb.getPostResponse("http://www.ssread.com/zt/writecookie.jsp"));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值