java中,如何用POST方法将参数传递给第三方网站
URLurl=newURL("http://www.baidu.coml");HttpURLConnectionconnection=(java.net.HttpURLC...
URL url = new URL(
"http://www.baidu.coml");
HttpURLConnection connection = (java.net.HttpURLConnection)url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
上面是一段示例代码,即链接到www.baidu.com这个网站,现在我想动态的将一个参数传递给这个网站,然后得到它搜索后得到的html页面,比如,将java传递给它,得到百度搜索java这个关键字之后的页面,请高人指点。
上面的只是一个示例代码,其实我真正想要的不是百度的查询结果,百度的查询是get方式你可以在URL中追加想要查询的字符,但是如果是一个网站它用的方法是POST,没办法在URL中追加参数怎么办呢? 展开
"http://www.baidu.coml");
HttpURLConnection connection = (java.net.HttpURLConnection)url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
上面是一段示例代码,即链接到www.baidu.com这个网站,现在我想动态的将一个参数传递给这个网站,然后得到它搜索后得到的html页面,比如,将java传递给它,得到百度搜索java这个关键字之后的页面,请高人指点。
上面的只是一个示例代码,其实我真正想要的不是百度的查询结果,百度的查询是get方式你可以在URL中追加想要查询的字符,但是如果是一个网站它用的方法是POST,没办法在URL中追加参数怎么办呢? 展开
6个回答
展开全部
使用org.apache.commons.httpclient方便,效率又高,下面是post方式提交登录参数的代码:
public class FormLoginDemo
{
static final String LOGON_SITE = "developer.java.sun.com";
static final int LOGON_PORT = 80;
public FormLoginDemo() {
super();
}
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT, "http");
PostMethod authpost = new PostMethod("/servlet/SessionServlet");
// 准备登录参数
NameValuePair action = new NameValuePair("action", "login");
NameValuePair url = new NameValuePair("url", "/index.html");
NameValuePair userid = new NameValuePair("UserId", "userid");
NameValuePair password = new NameValuePair("Password", "password");
authpost.setRequestBody(
new NameValuePair[] {action, url, userid, password});
// 执行Post请求
client.executeMethod(authpost);
// 打印状态码
System.out.println("Login form post: " + authpost.getStatusLine().toString());
// 释放连接
authpost.releaseConnection();
}
}
public class FormLoginDemo
{
static final String LOGON_SITE = "developer.java.sun.com";
static final int LOGON_PORT = 80;
public FormLoginDemo() {
super();
}
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT, "http");
PostMethod authpost = new PostMethod("/servlet/SessionServlet");
// 准备登录参数
NameValuePair action = new NameValuePair("action", "login");
NameValuePair url = new NameValuePair("url", "/index.html");
NameValuePair userid = new NameValuePair("UserId", "userid");
NameValuePair password = new NameValuePair("Password", "password");
authpost.setRequestBody(
new NameValuePair[] {action, url, userid, password});
// 执行Post请求
client.executeMethod(authpost);
// 打印状态码
System.out.println("Login form post: " + authpost.getStatusLine().toString());
// 释放连接
authpost.releaseConnection();
}
}
展开全部
把表单<form>的action属性设为第三方网站的处理程序地址就可以了。里面各<input>标签的name属性要与接受方一致
你自己做程序的时候,表单提交给自己能做到吧?而提交给别人是一样的,唯一不同就是action地址打成别人的地址,参数名称改成别人网站需要的参数名称就可以了。
比如,你自己的程序
<form action="程序处理地址" method="post">
<input type="text" name="abc" /> 自己的程序里接受名为abc的参数
</form>
而别人的程序
<form action="http://第三方地址/程序" method="post">
<input type="text" name="这里的name值换成别人程序需要的" value="" />
</form>
你自己做程序的时候,表单提交给自己能做到吧?而提交给别人是一样的,唯一不同就是action地址打成别人的地址,参数名称改成别人网站需要的参数名称就可以了。
比如,你自己的程序
<form action="程序处理地址" method="post">
<input type="text" name="abc" /> 自己的程序里接受名为abc的参数
</form>
而别人的程序
<form action="http://第三方地址/程序" method="post">
<input type="text" name="这里的name值换成别人程序需要的" value="" />
</form>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提示:。。。
<form action="http://127.0.0.1:8080/1.jsp" method="post">
<input type="text" name="abc" value="fdfd">
<input type="hidden" name="bca" value="321321">
<input type="submit">
</form>
http请求正文内容为:
abc=fdfd&bca=321321
正文结束。没有回车换行
知道了吧。。
URL url = new URL("http://127.0.0.1:8080/1.jsp");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
OutputStream out = con.getOutputStream();
out.write("abc=123123&bca=321321".getBytes());
InputStream in = con.getInputStream();
上面的代码传参abc,bca
<form action="http://127.0.0.1:8080/1.jsp" method="post">
<input type="text" name="abc" value="fdfd">
<input type="hidden" name="bca" value="321321">
<input type="submit">
</form>
http请求正文内容为:
abc=fdfd&bca=321321
正文结束。没有回车换行
知道了吧。。
URL url = new URL("http://127.0.0.1:8080/1.jsp");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
OutputStream out = con.getOutputStream();
out.write("abc=123123&bca=321321".getBytes());
InputStream in = con.getInputStream();
上面的代码传参abc,bca
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你一个简单的html页面,你可以执行下看看是不是你想要的效果!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<a href="http://www.baidu.com/s?wd=java">百度一下</a>
</body>
</html>
执行效果:点击之后,跳转到百度,并且显示java的查询条目!
关键点在于:找到这个第三方网站的查询字符串!
比如,你在百度搜索某个东西之后,地址栏是这样显示的:
http://www.baidu.com/s?wd="你所输入的信息的另一种编码显示"
也就是说,我们只需要提供一个类似的查询字符串即可!
你可以在服务器部分动态的给wd赋值即可!
如果是post的话,想要直接添加参数,然后传给第三方,然后返回第三方的执行结果,估计是不行的!从安全上考虑,java或者其他web开发语言都不会允许这样的事情发生! 不过,还是期待有解决办法出现!关注中...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<a href="http://www.baidu.com/s?wd=java">百度一下</a>
</body>
</html>
执行效果:点击之后,跳转到百度,并且显示java的查询条目!
关键点在于:找到这个第三方网站的查询字符串!
比如,你在百度搜索某个东西之后,地址栏是这样显示的:
http://www.baidu.com/s?wd="你所输入的信息的另一种编码显示"
也就是说,我们只需要提供一个类似的查询字符串即可!
你可以在服务器部分动态的给wd赋值即可!
如果是post的话,想要直接添加参数,然后传给第三方,然后返回第三方的执行结果,估计是不行的!从安全上考虑,java或者其他web开发语言都不会允许这样的事情发生! 不过,还是期待有解决办法出现!关注中...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯
可以人为的创建一个表单,然后给出需要的参数和值,用javascript来提交这个表单,就是模拟submit按钮的click
可以人为的创建一个表单,然后给出需要的参数和值,用javascript来提交这个表单,就是模拟submit按钮的click
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询