运行此命令时出现异常,但是 Jenkins实际上执行了请求的操作:
persistentvolumeclaim "myclaim" not
例外:
URL url = new URL("https://somehost.com/jenkins/quietDown");
HttpURLConnection c= (HttpURLConnection) url.openConnection();
c.setRequestMethod("POST");
c.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(("user:apiToken").getBytes()));
c.getInputStream().close();
使用Jenkins 2.164.3和Java 8进行测试。
答案 0 :(得分:0)
设置此设置可消除异常:
connection.setInstanceFollowRedirects(false);
几个小时后,我注意到堆栈跟踪包含的URL与我发布到的URL略有不同:
https://somehost.com/jenkins/
vs
https://somehost.com/jenkins/quietDown
Jenkins似乎通过重定向(302 Found
)进行了响应,默认情况下,HttUrlConnections会从该重定向中读取该重定向,然后由于某种原因导致该异常。
最长的时间里,我试图找到一种无需调用connection.getInputStream()
即可发出POST请求的方法,但这似乎是唯一实际触发请求的调用。如果有人知道使用纯Java发出POST请求的另一种方法,请告诉我。
我知道我的URL和username:token
的内容是正确的,因为我使用curl进行了测试(即使打开了Follow redirect选项,它也没有抱怨):
curl -X POST https://somehost.com/jenkins/quietDown -u admin:token
curl -L -X POST https://somehost.com/jenkins/quietDown -u admin:token