Java Http 请求 PUT : 401 未经授权

Java Http request PUT : 401 unauthorized

我正在尝试从 Java 应用向服务器发送 PUT 请求。我成功发送了 GET、POST 和 DELETE 请求,但 PUT 请求不会成功(我收到以下代码的 401 错误,使用 apache 包的 HttpPut 的其他代码的 405 错误)。 我正在使用 java.net.HttpURLConnection,这是我的代码的一小部分:

URL obj = new URL(urlPost);

HttpURLConnection con = (HttpURLConnection) obj.openConnection();

//add request header
con.setRequestMethod(typeRequest); //typeRequest = PUT

String credentials = adminOC + ":" + pwdOC;
String encoding = Base64.encode(credentials.getBytes("UTF-8"));
con.setRequestProperty("Authorization", String.format("Basic %s", encoding));

if (!typeRequest.equals("GET")){
    con.setDoOutput(true);
    try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
        wr.writeBytes(postParam);
        wr.flush();
    }
}
if (con.getResponseCode() == 200){
    try (BufferedReader in = new BufferedReader(
        new InputStreamReader(con.getInputStream()))) {
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            response += inputLine;
        }
    }
}

我尝试以 "POST" 方式发送我的 PUT 参数,也尝试直接在 URL 中发送。 这似乎是我的 Java 代码的错误,而不是服务器的错误,因为我尝试使用 cURL 执行 PUT 请求并且它有效。

感谢阅读,希望您能给我一些提示来调试问题。

您的代码中缺少的是 con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")