热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HttpClient怎么提交Form表单

如题,HttpClient如何处理Form表单的提交。各位大虾请帮帮忙,谢谢。注:HttpClient4.1版本
如题,HttpClient如何处理Form表单的提交。各位大虾请帮帮忙,谢谢。
注:HttpClient4.1版本

13 个解决方案

#1


httpclient包中 postmethod便是模拟post请求..

#2


引用楼主 javaaihao897 的回复:
如题,HttpClient如何处理Form表单的提交。各位大虾请帮帮忙,谢谢。
注:HttpClient4.1版本

谢谢。
能不能具体点?如:http://qihoo.com/wenda.php?do=index&act=spider&dest=http%3A%2F%2Fqihoo.com%2Fwenda.php%3Fkw%3Dseo%26ff%3D1%26do%3Dsearch%26noq%3Dq%26src%3Dnindex
这样一个链接,我要将其中的验证码提交到这个系统的后台。首先是不知道各表单项怎么放到请求里面,其次是不知道往哪里提交(也就是不知道向哪个URL发送请求)。

#3


不用HTTPClient
URLConnection或者Socket还是会的

#4


顶。求HttpPost的用法。

#5


给个完整的代码段如下,希望你能用上。


import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;

import org.apache.commons.httpclient.COOKIE;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
/**
 * @author Stony Zhang  (Mybeautiful)
 * @MSN  stonyz@live.com
 * @QQ   55279427
 *
 */
public class Netway {
private HttpClient httpClient = new HttpClient();

private String serverURL = "";

public String postPage(String page) {
String url = this.getURL(page);
PostMethod postMethod = new PostMethod(url);
return this.post(postMethod);
}

private String getURL(String page) {
// TODO Auto-generated method stub
return "http://" + this.serverURL + "/" + page;
}

public String postPage(String page, Properties pdata) {
String url = this.getURL(page);
PostMethod postMethod = new PostMethod(url);
NameValuePair[] data = new NameValuePair[pdata.size()];
Enumeration keys = pdata.keys();
int i = 0;
for (; keys.hasMoreElements();) {
String k = (String) keys.nextElement();
String v = (String) pdata.get(k);
data[i] = new NameValuePair(k, v);
i++;
}
postMethod.setRequestBody(data);
return this.post(postMethod);
}

private String post(PostMethod postMethod) {
String result = "";
try {
int statusCode = httpClient.executeMethod(postMethod);
// 301 or 302
if (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.");
}
}
result = postMethod.getResponseBodyAsString();
} catch (HttpException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

System.out.println(result);
return result;

}

public void setServerURL(String serverURL) {
this.serverURL = serverURL;

}

public String getServerURL() {
return serverURL;
}

}


#6


就楼主的应用,可以用 public String postPage(String page, Properties pdata) 方法,

具体pdata里面放什么,你懂得...

在我的测试中,一般PostMethod貌似可以完全取代GetMethod,但反之不然。 当然只是测试出来得到的经验,没有理论根据。

#7


引用 6 楼 mybeautiful 的回复:
就楼主的应用,可以用 public String postPage(String page, Properties pdata) 方法,

具体pdata里面放什么,你懂得...

在我的测试中,一般PostMethod貌似可以完全取代GetMethod,但反之不然。 当然只是测试出来得到的经验,没有理论根据。

非常感谢。还有一点不明白。
http://qihoo.com/wenda.php?do=index&act=spider&dest=http%3A%2F%2Fqihoo.com%2Fwenda.php%3Fkw%3Dseo%26ff%3D1%26do%3Dsearch%26noq%3Dq%26src%3Dnindex
像这样一个链接上的验证码,我想把该验证码提交到服务器后台,请求URL该怎么写呢?或者以后碰到这种问题用什么方法可以知道该往哪里发送请求呢。还请给个稍详细的回答。谢谢了。

#8


1. 你可以直接调用 public String postPage(String page) ,page就放你那个长长的url. (我自己没有试)

2.用 postPage(String page, Properties pdata) 方法,
   Properties pdata= new Properties ();
   pdata.setProperty("do","index");
   pdata.setProperty("act","spider");
   pdata.setProperty("dest",http); //http不要用转义后的,就是说原始的http地址,如http://qihoo.com.....


希望能帮到你。

#9


引用 8 楼 mybeautiful 的回复:
1. 你可以直接调用 public String postPage(String page) ,page就放你那个长长的url. (我自己没有试)

2.用 postPage(String page, Properties pdata) 方法,
  Properties pdata= new Properties ();
  pdata.setProperty("do","index");……

谢谢,我试试。

#10


看来我来晚了.午休去..

#11


该回复于2011-06-15 16:17:00被版主删除

#12


引用 10 楼 hnldzoubaoqi 的回复:
看来我来晚了.午休去..

不晚。有好的方案可以说来听听。

#13


该回复于2011-06-17 17:14:51被版主删除

推荐阅读
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
author-avatar
杭ai君浩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有