我正在尝试从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请求并且它有效。
感谢阅读,我希望你能给我一些调整问题的提示。
答案 0 :(得分:0)
您的代码中缺少的是con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded")