gpt4 book ai didi

Java:IllegalStateArgument 的 HttpURLConnection 问题:已经连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:21:03 26 4
gpt4 key购买 nike

这个问题似乎很清楚发生了什么:我已经打开了一个连接,问题是我不知道为什么。

现在我只是在测试我的 http 登录和退出。

登录:

HttpURLConnection con = openConnection(URLGenerator.getLoginURL(), true, true,"POST");
String content = ...;
writeToOutput(con, content);
con.connect();
String cookieVal = con.getHeaderField("Set-Cookie");
if(cookieVal != null)
{
sessionId = cookieVal.substring(0, cookieVal.indexOf(";"));
}
con.disconnect();
return con.getResponseCode();

注销:

    HttpURLConnection con = openConnection(URLGenerator.getLogoutURL(), true, true,"GET");
String content = ...;
writeToOutput(con, content);
setCookies(con);
con.connect();
con.disconnect();
return con.getResponseCode();

对于代码爱好者来说,函数 OpenConnection(因为我知道人们首先要问的是“这个函数在哪里”

public static final HttpURLConnection openConnection(URL url, boolean in, boolean out,String requestMethode) throws IOException{
HttpURLConnection con = (HttpURLConnection) url.openConnection ();
con.setDoInput(in);
con.setDoOutput (out);
if(requestMethode == null){
requestMethode = "GET";
}
con.setRequestMethod(requestMethode);
con.setRequestProperty ("Content-Type", "application/x-www-form-urlencoded");
return con;
}

这是触发 java.lang.IllegalStateException: Already connected

的函数
public static final void setCookies(HttpURLConnection con){
if(sessionId != null)
{
con.setRequestProperty("Cookie", sessionId);
}
}

我不明白为什么连接仍然打开。

我什至尝试调用 disconnect 但它不起作用。

我认为主要是设置一个 HttpURLConncetion 对象并连接以执行请求,接收结果并终止连接。

有什么想法吗?

谢谢杰森

最佳答案

您需要在写入请求正文之前设置 cookie(请求 header 值)。发送请求正文的第一位后,您将无法再更改请求 header 。

所以,改变

writeToOutput(con, content);
setCookies(con);

setCookies(con);
writeToOutput(con, content);

这个问题应该会消失。

关于Java:IllegalStateArgument 的 HttpURLConnection 问题:已经连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368535/

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