JAVA代码实现POST数据到指定网址(下班前结贴)

zhoujijunnt 2009-02-10 02:46:53
有jsp如下:
<html>
<head>
<script type="text/javascript">
function postData(){
form1.action = "http://WWW.XXXXXXXX.COM";
document.form1.submit();
}
</script>
<title>
Test
</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" />
</head>
<body>
<form id="form1" name="form1" method="post" onsubmit="postData();">
<table border="0">
<tr>
<td><input name="N01" id="N01" value="20043" /></td>
</tr>
<tr>
<td align="center"><input type=submit name='doTest' value='TEST' /></td>
</tr>
</table>
</form>
</body>
</html>
功能很简单,就是把几个字段值POST到某个网址,然后转到该网页继续执行相关操作。

现在需要在JAVA方法里实现这个功能。
以前没接触过这个,在网上搜了好几中方法,都没成功,不知道是什么原因。
我参考过的帖:http://blog.csdn.net/totogogo/archive/2007/10/18/1831588.aspx
...全文
355 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
leidiqiu 2010-07-23
  • 打赏
  • 举报
回复
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class TicketQuery {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
URL url = new URL("http://www.xxxxxx.com");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(con
.getOutputStream());
String str = "NO1=20034";
out.write(str);
out.flush();
out.close();

if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream is = con.getInputStream();
byte[] b = new byte[is.available()];
is.read(b);
System.out.println(new String(b, "utf-8"));
System.out.println("------");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
可以下班了!
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
问题已解决。
用了比较笨的方法,直接printWriter.write()了一个虚拟画面,然后提交的。
还是希望能用比较简单的方法。
继续探索中。。。
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dipolar 的回复:]
你是不是想用Java模拟浏览器动作?apache有个叫httpclient的库,直接可以用来做你想做的活。-----查了一下代码,才想起来这个库名字。
[/Quote]

是的。
最终目的是打开目标网页,而如果POST的数据不正确的话,目标网页将无法打开。
「已注销」 2009-02-10
  • 打赏
  • 举报
回复
你是不是想用Java模拟浏览器动作?apache有个叫httpclient的库,直接可以用来做你想做的活。-----查了一下代码,才想起来这个库名字。
liang8305 2009-02-10
  • 打赏
  • 举报
回复
HttpURLConnection

然后取到out流

往out流里写参数字符串:"aaaa=aaaa&bbbb=bbbb";

然后取in流

读in流的内容
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mousetsun 的回复:]
在action里得到参数值
然后用
response.sendRedirect("http://WWW.XXXXXXXX.COM"+参数)

这样呢?
[/Quote]

不可以这样做,必须要是模拟POST方法的。

[Quote=引用 8 楼 Landor2004 的回复:]
你说的java是什么意思,如果是servlet的话,那和用jsp一样

如果是纯java,那post数据倒是简单,但是打开网页就麻烦了

纯java可以用httpclient来模拟表单提交,并且获取目标网站的内容
[/Quote]

是纯java,而且需要打开网页。

httpclient以前没使用过,能提供简单说明吗?

我先google一下去!
DiscussQuestions 2009-02-10
  • 打赏
  • 举报
回复
楼主可以试试直接用一个重定向到你要到的那个网页!~
直接在网页后面添加一个参数!~但记住不要用转发!~转发有时会出现一些问题!~
Landor2004 2009-02-10
  • 打赏
  • 举报
回复
你说的java是什么意思,如果是servlet的话,那和用jsp一样

如果是纯java,那post数据倒是简单,但是打开网页就麻烦了

纯java可以用httpclient来模拟表单提交,并且获取目标网站的内容
kongwei302 2009-02-10
  • 打赏
  • 举报
回复
目的就是传参呀 很简单
Jacky_Zhu_1983 2009-02-10
  • 打赏
  • 举报
回复
在action里得到参数值
然后用
response.sendRedirect("http://WWW.XXXXXXXX.COM"+参数)

这样呢?
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
最好能用HttpServletRequest来做
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
必须在JAVA代码里实现,要是可以那样做倒是很方便。不能改jsp,包括写js等。
Jacky_Zhu_1983 2009-02-10
  • 打赏
  • 举报
回复
直接在form1.action = "http://WWW.XXXXXXXX.COM";
后面跟上参数不可以吗?
zhoujijunnt 2009-02-10
  • 打赏
  • 举报
回复
现在和页面已经没有关系了,得用JAVA代码实现这个功能。我问了几个人,有说用HttpServletRequest,也有说用HttpURLConnection,我都试过了,可惜没成功。可能是我之前不怎么熟悉这一块,所以很多东西都是一边查资料一边做,比较乱。
laorer 2009-02-10
  • 打赏
  • 举报
回复
ajax ,你不需要刷新这个页面

81,122

社区成员

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

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