Java Http请求PUT:401未经授权

时间:2016-06-06 13:25:19

标签: java httprequest put http-status-code-401

我正在尝试从Java应用程序向服务器发送PUT请求。我成功发送了GET,POST和DELETE请求,但PUT一个不会成功(我在下面的代码中得到401错误,405错误,其他代码使用apache包的HttpPut)。 我正在使用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请求并且它有效。

感谢阅读,我希望你能给我一些调整问题的提示。

1 个答案:

答案 0 :(得分:0)

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