HttpClient 怎么提交Form表单

javaaihao897 2011-06-15 09:06:33
如题,HttpClient如何处理Form表单的提交。各位大虾请帮帮忙,谢谢。
注:HttpClient4.1版本
...全文
606 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaaihao897 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hnldzoubaoqi 的回复:]
看来我来晚了.午休去..
[/Quote]
不晚。有好的方案可以说来听听。
剑下一点红 2011-06-15
  • 打赏
  • 举报
回复
看来我来晚了.午休去..
javaaihao897 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mybeautiful 的回复:]
1. 你可以直接调用 public String postPage(String page) ,page就放你那个长长的url. (我自己没有试)

2.用 postPage(String page, Properties pdata) 方法,
Properties pdata= new Properties ();
pdata.setProperty("do","index");……
[/Quote]
谢谢,我试试。
Mybeautiful 2011-06-15
  • 打赏
  • 举报
回复
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.....


希望能帮到你。
javaaihao897 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mybeautiful 的回复:]
就楼主的应用,可以用 public String postPage(String page, Properties pdata) 方法,

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

在我的测试中,一般PostMethod貌似可以完全取代GetMethod,但反之不然。 当然只是测试出来得到的经验,没有理论根据。
[/Quote]
非常感谢。还有一点不明白。
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该怎么写呢?或者以后碰到这种问题用什么方法可以知道该往哪里发送请求呢。还请给个稍详细的回答。谢谢了。
Mybeautiful 2011-06-15
  • 打赏
  • 举报
回复
就楼主的应用,可以用 public String postPage(String page, Properties pdata) 方法,

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

在我的测试中,一般PostMethod貌似可以完全取代GetMethod,但反之不然。 当然只是测试出来得到的经验,没有理论根据。
Mybeautiful 2011-06-15
  • 打赏
  • 举报
回复
给个完整的代码段如下,希望你能用上。


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;
}

}


javaaihao897 2011-06-15
  • 打赏
  • 举报
回复
顶。求HttpPost的用法。
BearKin 2011-06-15
  • 打赏
  • 举报
回复
不用HTTPClient
URLConnection或者Socket还是会的
javaaihao897 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 javaaihao897 的回复:]
如题,HttpClient如何处理Form表单的提交。各位大虾请帮帮忙,谢谢。
注:HttpClient4.1版本
[/Quote]
谢谢。
能不能具体点?如: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发送请求)。
JAVA涨薪基地 2011-06-15
  • 打赏
  • 举报
回复
httpclient包中 postmethod便是模拟post请求..

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧