Java 重定向和POST方法
如何发布方法并将参数重定向到链接؟ 有这种可能性吗Java 重定向和POST方法,java,servlets,Java,Servlets,如何发布方法并将参数重定向到链接؟ 有这种可能性吗 link = http://92.42.51.91/CGGateway/Default.aspx 我目前发送的信息,我没有问题 但我不能改变方向 当我正确发送信息时,我可以使用链接 URL url = new URL("http://62.68.645.32/Default.aspx"); Map<String, Object> params = new LinkedHashMap<String, Objec
link = http://92.42.51.91/CGGateway/Default.aspx
我目前发送的信息,我没有问题
但我不能改变方向
当我正确发送信息时,我可以使用链接
URL url = new URL("http://62.68.645.32/Default.aspx");
Map<String, Object> params = new LinkedHashMap<String, Object>();
params.put("Timestamp", Timestamp);
params.put("Callback", "google.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
resp.sendRedirect(Link);
URL=新URL(“http://62.68.645.32/Default.aspx");
Map params=新建LinkedHashMap();
参数put(“时间戳”,时间戳);
params.put(“回调”,“google.com”);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod(“POST”);
分别发送重定向(链接);
通常,当人们说“重定向”时,他们指的是HTTP代码302重定向。http客户机中302代码的许多实现仅使用GET进行重定向,而不考虑原始请求方法,因此使用此代码“重定向”到POST端点是不可靠的
克服这一问题的一个简单方法是使用自张贴表单:
<form name="autoform" action="..." method="POST">
<input type="hidden" name="param1" value="value1">
<input type="hidden" name="param2" value="value2">
...
</form>
在这种情况下,您将无法控制浏览器发送到该
url
的确切参数;相反,浏览器将自动发送与发送到重定向URL相同的参数。通常,当人们说“重定向”时,他们指的是HTTP代码302重定向。http客户机中302代码的许多实现仅使用GET进行重定向,而不考虑原始请求方法,因此使用此代码“重定向”到POST端点是不可靠的
克服这一问题的一个简单方法是使用自张贴表单:
<form name="autoform" action="..." method="POST">
<input type="hidden" name="param1" value="value1">
<input type="hidden" name="param2" value="value2">
...
</form>
在这种情况下,您将无法控制浏览器发送到该
url
的确切参数;相反,浏览器将自动发送与发送到重定向URL相同的参数。我不确定是否完全理解您的意思,但是,我编写了一个类来构建一个查询字符串,可以用于get或post:
public class QueryBuilder {
private final String encoding;
private final StringBuilder buf = new StringBuilder();
public QueryBuilder(String encoding) {
this.encoding = encoding;
}
public boolean isEmpty() {
return buf.length() == 0;
}
public void add(String name, Object value) {
try {
if (value != null) {
if (buf.length() > 0) {
buf.append('&');
}
buf.append(name);
buf.append('=');
buf.append(URLEncoder.encode(value.toString(), encoding));
}
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("Unsupported encoding " + encoding);
}
}
public String toURL(String url) {
if (buf.length() == 0) {
return url;
} else {
return url + '?' + buf.toString();
}
}
@Override
public String toString() {
return buf.toString();
}
}
要将参数作为POST传递,请执行以下操作:
QueryBuilder query = new QueryBuilder("UTF-8");
query.add("Timestamp", Timestamp);
query.add("Callback", "google.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = cnt.getOutputStream();
try {
out.write(query.toString().getBytes("UTF-8"));
} finally {
out.close();
}
int stat = conn.getResponseCode();
if (stat < 200 || stat >= 300) {
throw new IOException("HTTP Error " + stat + ": "
+ conn.getResponseMessage());
}
...
QueryBuilder query=newquerybuilder(“UTF-8”);
查询.添加(“时间戳”,时间戳);
query.add(“Callback”,“google.com”);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置输出(真);
conn.setRequestMethod(“POST”);
OutputStream out=cnt.getOutputStream();
试一试{
out.write(query.toString().getBytes(“UTF-8”);
}最后{
out.close();
}
int stat=conn.getResponseCode();
如果(统计值<200 | |统计值>=300){
抛出新IOException(“HTTP错误”+stat+”:“
+连接getResponseMessage());
}
...
我不确定是否完全理解您的意思,但是,我已经编写了一个类来构建一个查询字符串,可以用于get或post:
public class QueryBuilder {
private final String encoding;
private final StringBuilder buf = new StringBuilder();
public QueryBuilder(String encoding) {
this.encoding = encoding;
}
public boolean isEmpty() {
return buf.length() == 0;
}
public void add(String name, Object value) {
try {
if (value != null) {
if (buf.length() > 0) {
buf.append('&');
}
buf.append(name);
buf.append('=');
buf.append(URLEncoder.encode(value.toString(), encoding));
}
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("Unsupported encoding " + encoding);
}
}
public String toURL(String url) {
if (buf.length() == 0) {
return url;
} else {
return url + '?' + buf.toString();
}
}
@Override
public String toString() {
return buf.toString();
}
}
要将参数作为POST传递,请执行以下操作:
QueryBuilder query = new QueryBuilder("UTF-8");
query.add("Timestamp", Timestamp);
query.add("Callback", "google.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = cnt.getOutputStream();
try {
out.write(query.toString().getBytes("UTF-8"));
} finally {
out.close();
}
int stat = conn.getResponseCode();
if (stat < 200 || stat >= 300) {
throw new IOException("HTTP Error " + stat + ": "
+ conn.getResponseMessage());
}
...
QueryBuilder query=newquerybuilder(“UTF-8”);
查询.添加(“时间戳”,时间戳);
query.add(“Callback”,“google.com”);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
连接设置输出(真);
conn.setRequestMethod(“POST”);
OutputStream out=cnt.getOutputStream();
试一试{
out.write(query.toString().getBytes(“UTF-8”);
}最后{
out.close();
}
int stat=conn.getResponseCode();
如果(统计值<200 | |统计值>=300){
抛出新IOException(“HTTP错误”+stat+”:“
+连接getResponseMessage());
}
...
请将更多代码显示为一个列表。重定向取决于您使用的框架。请将更多代码显示为一个框架。重定向取决于您使用的框架