通过代码示例跟我学commons-httpclient3组件技术及应用实例第1部分内容摘要:
Method 对象 时传入的协议不对,比如将 写成了 htp,或者服务器端返回的内容不正常等,并且该异常发生是不可恢复的;第二种异常一般是由于网络原因引起的异常,对于这种异常( IOException), HttpClient 会根据指定的恢复策略自动试着重新执行executeMethod 方法。 HttpClient 的恢复策略可以自定 义(通过实现接口 HttpMethodRetryHandler 来实现)。 通过 HttpClient 的方法 setParameter 设置 开发人员所希望 实现的恢复策略 —— 本例中使用的是系统提供的默认恢复策略,该策略在碰到第二类异常的时候将自动重试 3 次。 executeMethod 返回值是一个整数,表示了执行该方法后服务器返回的状态码,该状态码能表示出该方法执行是否成功、需要认证或者页面发生了跳转(默认状态下 GetMethod的实例是自动处理跳转的)等。 ( 4)获得 目标地址的 响应输出的 内容 在返回的状态码正确后,即 可取得 服务器程序返回的结果 内容。 而 取得目标地址的 响应输出的 内容有三种方法: 1) getResponseBody,该方法返回的是目标的二进制的 byte 流; 2) getResponseBodyAsString,这个方法返回的是 String 类型,值得注意的是该方法返回的 String 的编码是根据系统默认的编码方式,所以返回的 String 值可能编码类型有误 —— 需要正确地进行中文编码的转换 ; 3) getResponseBodyAsStream,这个方法返回的是 InputStream 流对象, 对于目标地址中有大量数据需要传输是最佳的。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 10/22 页 4) 最后 释放连接 —— 无论执行方法是否成功,都必须释放连接。 代码为:()。 ( 5)执行的结果 由于目标页面的内容比较多,因此采用 getResponseBodyAsString 方法不适用于返回的数据量比较大的应用场合 —— 上面的示例结果没有完整地获得返回的全部结果数据。 获得服务器端程序返回的响应输出流 ( 1) 获得服务器返回的响应输出流 当然,如果要获得服务器返回的响应输出流(从客户端来看为输入流),则应该采用下面的代码: InputStream in = ()。 ( 2) 完整的代码示例 package。 import。 import。 import。 import。 import。 import。 import。 import。 import。 public class WebBankAppclient { public WebBankAppclient() throws HttpException,IOException{ 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 11/22 页 HttpClient client = new HttpClient()。 //使用 GET 方法,如果服务器需要通过 HTTPS 连接,那只需要将下面 URL中的 换成 HttpMethod oneGetMethod = new GetMethod( int StatusCode =(oneGetMethod)。 if(StatusCode==){ (())。 //打印服务器返回的状态 InputStream oneInputStream = ()。 InputStreamReader oneInputStreamReader=new InputStreamReader(oneInputStream)。 BufferedReader oneBufferedReader=new BufferedReader(oneInputStreamReader)。 String oneLineString=null。 while((oneLineString=())!=null){ (oneLineString)。 //打印返回的结果行信息 } } else{ (方法执行过程中出现了错误 )。 //打印服务器返回的状态 } ()。 //释放连接 } public static void main(String[] args) throws HttpException,IOException{ WebBankAppclient oneWebBankAppclient=new WebBankAppclient()。 } } ( 3)执行后的结果 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 12/22 页 编程 CommonsHTTPClient组件 —— 使用代理服务器 访问的方式 ( 1) HttpClient 中使用代理服务器非常简单 调用 HttpClient 中 setProxy 方法就可以,方法的第一个参数是代理服务器地址,第二个参数是端口号。 HttpClient client = new HttpClient()。 //下面的代码是设置代理服务器地址和端口 ().setProxy(,808)。 ( 2)代码示例 package。 import。 import。 import。 import。 import。 public class WebBankAppclient { public WebBankAppclient() throws HttpException,IOException{ HttpClient client = new HttpClient()。 //下面的代码是设置代理服务器地址和端口 ().setProxy(,808)。 HttpMethod method = new GetMethod( )。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 13/22 页 //使用 POST 方法 HttpMethod method = new PostMethod( (method)。通过代码示例跟我学commons-httpclient3组件技术及应用实例第1部分
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。