【发布时间】:2018-09-28 13:10:13
【问题描述】:
我正在尝试使用 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 调用?
【问题讨论】:
标签: java curl httpurlconnection put