`
LifeFree
  • 浏览: 59023 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Aache Commons HttpClient 要注意的一个问题

阅读更多
apache 的东西可以说是我编程用的最多的东西了。最近做的一个程序因为要手动Post数据给
  一个外部URL,当时觉得如果直接调用java的API,太靠近底层了,要是要扩展一下,要设个代理等
  处理起来麻烦了点。这样的功能大家都要用到,
  猜想肯定有现成的更高级的api,直接在我们的项目的lib里翻了翻,发现有commons-httpclient-3.0-rc3.jar
  的jar,在apache上一看正是我要的东西,apache的user guide 写着:
 
 
java 代码
 
  1. PostMethod post = new PostMethod("http://jakarata.apache.org/");  
  2. NameValuePair[] data = {  
  3.   new NameValuePair("user""joe"),  
  4.   new NameValuePair("password""bloggs")  
  5. };  
  6. post.setRequestBody(data);  
  7. // execute method and handle any error responses.  
  8. ...  
  9. InputStream in = post.getResponseBodyAsStream();  
  10. // handle response.  

       
呵呵,这不就是我想要的嘛。马上写了个测试程序,调用后发现返回的输入流
(InputStream in) 为空,把url改成"www.google.com"返回的还是空,上网google
一把,发现台湾的javaworld网站也有人提出这个问题。

  程序就这么几行,改来改去都不行。最后在HttpClient的apidoc MultipartRequestEntity
  类的说明中找到一个的例子:
 
java 代码
 
  1. File f = new File("/path/fileToUpload.txt");  
  2.   PostMethod filePost = new PostMethod("http://host/some_path");  
  3.   Part[] parts = {  
  4.       new StringPart("param_name""value"),  
  5.       new FilePart(f.getName(), f)  
  6.   };  
  7.   filePost.setRequestEntity(  
  8.       new MultipartRequestEntity(parts, filePost.getParams())  
  9.       );  
  10.   HttpClient client = new HttpClient();  
  11.   int status = client.executeMethod(filePost);  

 
  这个例子最后两行多了一个client.executeMethod(filePost)的调用,
  于是把最后两行拿来改改,放到上个例子的"InputStream in = post.getResponseBodyAsStream();"一行的
  前面。终于雨过天晴拿到了返回输入流。
 
  经过测试如果不进行executeMethod()的调用是拿不到输入流的,真不清楚apache userguide别人是怎么运行成功
  的难道就我比较笨不知到先调用executeMethod() ??

  ps: 完整的程序需要进行异常的捕获与处理,post需要调用post.releaseConnection()来释放连接。
分享到:
评论
3 楼 weiqingfei 2007-06-21  
不执行连请求都发不出去呀,你都没捕捉以下传送数据么
2 楼 dwangel 2007-06-21  
感觉显然你没有仔细看user guide.
有下面的话,

The examples on the following pages are not complete and are only used to highlight the important features that are unique to each method. For complete examples, please refer to the sample code.

同时sample code的连接也给出来了。
估计后期改动比较大,开发组自己都不确定以后会怎样调用了。
1 楼 gfh21cn 2007-06-21  
不错,谢谢楼主

相关推荐

    Aache网络服务软件

    通过配置Apache,可以实用MATLAB Web Server进行远程网络教学

    RHEL5.4+Aache2.2+Mysql5.1+PHP5.2+GD2.0

    RHEL5.4+Aache2.2+Mysql5.1+PHP5.2+GD2.0

    VB学生档案管理系统设计与实现.rar

    计算机专业毕业设计VB精品论文资源

    debugpy-1.6.3-cp37-cp37m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于ssm的学生宿舍报修管理系统

    开发语言:Java JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.6/5.7(或8.0) 数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码+数据库保证完整可用,可提供远程调试并指导运行服务(额外付费)~ 如果对系统的中的某些部分感到不合适可提供修改服务,比如题目、界面、功能等等... 声明: 1.项目已经调试过,完美运行 2.需要远程帮忙部署项目,需要额外付费 3.本项目有演示视频,如果需要观看,请联系我v:19306446185 4.调试过程中可帮忙安装IDEA,eclipse,MySQL,JDK,Tomcat等软件 重点: 需要其他Java源码联系我,更多源码任你选,你想要的源码我都有! https://img-blog.csdnimg.cn/direct/e73dc0ac8d27434b86d886db5a438c71.jpeg

    cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    sja1300.x86_64.tar.gz

    SQLyong 各个版本,免费下载 SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。

    rwrewrewdfg

    dfgdfg

    基于Vue2的在线租车前台设计源码

    本项目是基于Vue2的在线租车前台设计源码,包含75个文件,其中包括27个Vue文件、20个PNG图像文件、16个JavaScript文件、3个JSON配置文件、3个SCSS样式文件、2个JPG图像文件、1个Gitignore文件、1个Markdown文档、1个ICO图标文件和1个HTML文件。系统专注于提供在线租车功能,支持车辆展示、租赁流程等功能,为用户提供了一个稳定、高效的在线租车平台。

    虚拟机下Ubuntu上网设置_ubuntu虚拟机怎么连接网络-CSDN博客.mhtml

    虚拟机下Ubuntu上网设置_ubuntu虚拟机怎么连接网络-CSDN博客.mhtml

    VB通讯录系统设计与实现(源代码+系统).rar

    计算机专业毕业时间之VB精品论文源代码资源

    labview使用DAQ采集数据时显示设备标识符无效

    当安装好NI-DAQmx后仍然无法运行采集程序,并且显示显示设备标识符无效,则需要添加虚拟采集设备。

    debugpy-1.6.3-cp39-cp39-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    20231108陈震浩《Python程序设计》实验四报告

    20231108陈震浩《Python程序设计》实验四报告

    源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip

    源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip

    grpcio-1.48.0-cp36-cp36m-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    二层独栋别墅钢混结构同一个梦别墅施工图.dwg

    二层独栋别墅钢混结构同一个梦别墅施工图.dwg

    VB校园一卡通管理系统(源代码+系统).rar

    计算机专业毕业时间之VB精品论文源代码资源

    Java项目之基于jsp医院预约挂号系统演示(源码 + 演示视频)

    Java项目之基于jsp医院预约挂号系统演示(源码 + 演示视频) 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea

    grpcio-1.3.5-cp35-cp35m-linux_armv7l.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics