我已经用Java创建了到私有API的连接
String urlRequest = "https://localhost:8080/orders/create";
String username = "test";
String password = "test";
String certificatePass = "test";
byte[] authEncBytes = Base64.getEncoder().encode((username + ":" + password).getBytes());
URL url = new URL(urlRequest);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Basic " + new String(authEncBytes));
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);
conn.setDoInput(true);
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
is.close();
在最初通过之后,连接似乎保持打开状态,因为从头开始运行代码时,HttpURLConnection
在 conn.setRequestMethod(“ POST”); ,< / p>
“无法重置方法:已连接”
我设法以某种方式关闭它,我不知道我做了什么,但是有人知道这里的问题可能是什么吗?同时我重新启动了PC,它仍然在 conn.setRequestMethod(“ POST”); 上引发异常,我不知道如何在重新启动之间保持连接。我还尝试在尝试设置请求方法之前添加 conn.disconnect(),但这似乎也不起作用。唯一有所作为的是更改URL,但是我只能连接一次,每次下一次运行代码都会给我同样的异常。
如何正确关闭连接?
答案 0 :(得分:3)
今天又遇到了问题,问题出在调试模式下。我当时在打电话给connect,我想在测试时会这样,以防万一有人不知道,表达式确实会影响您的变量并可以更改内存中的内容。例如,具有:
int a = 5;
System.out.println(a);
在您的代码中,并且在表达式列表中有a = 6
,System.out.println(a)
将打印6,而不是5。
删除表达式解决了我的问题。
答案 1 :(得分:0)
我认为您的问题已经在这里得到了答案。
Closing URLConnection and InputStream correctly?
在代码末尾关闭连接,不要在setRequest方法之前进行连接。