我正在尝试使用Java发送请求,当我像这样使用cURL调用时,它可以正常工作:
curl -X PUT http://serverurl.com/method/6eb276a2-5c79-4f6e-a4b5-a26b0e6848c7/action -H 'Content-Type: application/json' -H 'Token: cba5f12c-af55-480f-970e-525e446ef153' -H 'Content-Length : 0'
如果我发送相同的请求,但没有传递 Content-Length 参数,则会收到 411 HTTP 错误,表示需要指定长度。
以下是我的 Java 代码:
URL url = new URL("http://serverurl.com/method/6eb276a2-5c79-4f6e-a4b5-a26b0e6848c7/action");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.addRequestProperty("Content-Type", "application/json");
con.addRequestProperty("Token", "cba5f12c-af55-480f-970e-525e446ef153");
con.connect();
这个请求收到了一个411 HTTP状态码响应。因此,我尝试添加:
con.addRequestProperty("Content-Length", "0");
但是它没有起作用,所以我改成了:
URL url = new URL("http://serverurl.com/method/6eb276a2-5c79-4f6e-a4b5-a26b0e6848c7/action");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.addRequestProperty("Content-Type", "application/json");
con.addRequestProperty("Token", "cba5f12c-af55-480f-970e-525e446ef153");
con.setDoOutput(true);
con.getOutputStream().close();
con.setFixedLengthStreamingMode(0);
con.connect();
但现在我得到了400的HTTP代码。
如何使用空正文执行PUT请求并设置内容长度以匹配cURL调用?