Я пытаюсь отправить запрос PUT из приложения Java на сервер. Я успешно отправляю запросы GET, POST и DELETE, но PUT один не удастся (я получаю ошибку 401 с приведенным ниже кодом, 405 Ошибка с другим кодом, используя HttpPut пакета apache). Я использую java.net.HttpURLConnection, вот небольшая область моего кода:Java Http request PUT: 401 неавторизованный
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» способом, а также непосредственно в URL. Кажется, что это ошибка из моего кода Java, а не с сервера, потому что я пытался выполнить запрос PUT с помощью cURL, и это сработало.
Спасибо за чтение, надеюсь, вы сможете дать мне несколько советов, чтобы отладить проблему.
Вы могли бы сделать это с помощью локон? –
где вы задаете имя метода PUT? –
@Nicolas Да, следующий curl cmd отлично работает: curl -X "PUT" -u login: pwd http: //myadress/testdeploy/ocs/v1.php/cloud/users/john -d key = "email" - d value = "[email protected]" – Icedsky