gpt4 book ai didi

java - 在 Java 中执行 GET 并添加 header 请求后发送 POST 失败

转载 作者:太空宇宙 更新时间:2023-11-04 13:21:59 25 4
gpt4 key购买 nike

在 JEE 的实践项目中,我有一个关于 Javascript 代码的 HTML 页面,该页面向我的本地服务器发出请求,该服务器在互联网中搜索信息,根据情况发出请求 GET 和 POST。但偏偏在发出GET请求后,组成POST请求后,执行时出现异常

connection.setRequestMethod("POST");

结果是:“java.lang.IllegalStateException:连接正在进行中”。所以我决定在 try-catch block 中关闭它,编写:

 try{ con.setRequestMethod("POST"); }catch(Exception ex){}

但是当我尝试放置 header 请求时,它具有来自服务器的“请求”对象

"java.lang.IllegalStateException: Already connected"

但它唯一遵循的是一个将标题设置为的函数:

connection.setRequestProperty("header", "content");

如果有人可以帮助我解决这个问题,我将非常感谢。

<小时/>

我认为之前对我的问题的解释不够清楚。用于发出请求并放置 header 请求和参数及其值的函数是:

public static String obtener_html(String url, HttpServletRequest request, 
ArrayList<Key_value> replacements, boolean get){
try {
HttpURLConnection connection;

if(get){ url = data(url, request); }
connection = (HttpURLConnection)(new URL(url).openConnection());

if(get){
connection.setRequestMethod("GET");
set_headers(request, connection, replacements);
if(connection.getDoOutput()){ connection.setDoOutput(false); }
}
else{
connection.setRequestMethod("POST");
set_headers(request, connection, replacements);
if(!connection.getDoOutput()){ connection.setDoOutput(true); }

DataOutputStream writer = new DataOutputStream(connection.getOutputStream());
writer.writeBytes(data(null, request));
writer.flush();
writer.close();
}

int i = connection.getResponseCode();
if(i == 200){
InputStream reader = connection.getInputStream();
Text text = new Text();

int n;
while((n=reader.read()) != -1){ text.add((char)n); }
reader.close();
connection.disconnect();
return text.toString();
}

connection.disconnect();
}
catch(IOException ex){ ex.printStackTrace(); }

return null;
}

在我的代码中:

  1. “Key_value”类是我创建的。
  2. 函数“data(...)”,从对象“request”中获取参数和值,并将它们放入“connection”对象中。
  3. “设置 header ”功能与 header 请求相同,但更改了指示的 header 请求。
  4. “Text”类是我创建的,用于加速文本中字符的连续/顺序插入。

事实证明,我的服务器发出的第一个请求是 GET,但当它稍后发出 POST 时,它会给出错误消息。每次调用它时,都会创建一个“连接”对象,并在连接完成之前将其关闭,但无论如何它都会给出错误消息。我只向两个 IP 地址发出请求,但显然 url 可以不同。另外,即使没有必要指示该请求将是“POST”,因为控制方法“setDoOutput(...)”的标志已经是“true”。为什么即使我将 header 请求放在 try-catch block 中,它也不允许我放置 header 请求?我该如何解决这个问题?该异常表示连接正在进行中,或者已经连接,就像调用此函数的对象与第二次调用中的对象相同,或者像这样:

connection.disconnect();

完全没有效果。为什么以及如何解决它?

最佳答案

连接.断开();类型的事情应该总是放在最后。

try{
//your logic
}catch(Exception e){

}finally{
//Will be executed no matter what
connection.disconnect();
}

关于java - 在 Java 中执行 GET 并添加 header 请求后发送 POST 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com