Здесь за последние несколько часов я пытаюсь обновить некоторое поле ресурса, используя метод HttpURLConnection
PUT. Но теперь я изменил это на PATCH.
Я могу выполнить GET
и POST
, но в методе Http PATCH
постоянно возникает ошибка.
Запрос даже не отправляется в POSTMAN
.
Это класс java
:
try {
String serUrl = "https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/255";
String authString = user + ":" + password;
byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes());
String authStringEnc = new String(authEncBytes);
URL url = new URL(serUrl); //Enter URL here
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestProperty("X-HTTP-Method-Override", "PATCH");
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);
httpURLConnection.setRequestProperty("Content-Type", "application/json");
httpURLConnection.connect();
String inputJson = "{ \"id\":" + 255 + "," +
"\"assignedToAccount\": {" +
" \"id\":" + 233 +
" }," +
" \"name\":\"" + "task2_checking34" + "\"," +
" \"serviceSettings\":{" +
" \"incident\":{" +
" \"id\":" + 380 +
" }" +
" }" +
"}";
OutputStreamWriter osw = new OutputStreamWriter(httpURLConnection.getOutputStream());
osw.write(inputJson);
osw.flush();
osw.close();
BufferedReader br = new BufferedReader(new InputStreamReader(
(httpURLConnection.getInputStream())));
String output;
StringBuffer bfr = new StringBuffer();
String res = "";
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
bfr.append(output);
}
res = bfr.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Идея использования метода PATCH
в HttpUrlConnection
путем переопределения POST
взята из здесь.
У меня возникла идея отправки параметров в теле запроса, полученного из здесь.
Ресурсы, доступные по этому URL-адресу https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/
, похожи на
{
"id": 253,
"lookupName": "task_quality34",
"createdTime": "2017-08-03T05:34:34Z",
"updatedTime": "2017-08-03T05:34:34Z",
"links": [{
"rel": "canonical",
"href": "https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/253"
}]
}, {
"id": 255,
"lookupName": "task_quality-test12",
"createdTime": "2017-08-03T05:48:26Z",
"updatedTime": "2017-08-03T05:48:26Z",
"links": [{
"rel": "canonical",
"href": "https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/255"
}]
}
И я пытаюсь update
какое-то поле этого ресурса, используя метод PATCH по этому URL-адресу https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/255
Но каждый раз я получаю ошибку
java.io.IOException: Server returned HTTP response code: 400 for URL: https://lavazzaindia--tst1.custhelp.com/services/rest/connect/latest/tasks/255
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.cloud.task.TaskUpdate.main(TaskUpdate.java:80)
Пожалуйста, помогите мне здесь, чтобы исправить это.
GET
иPOST
, используяHttpUrlConnection
. Но в методеPUT
, пожалуйста, укажите мне коды, делаю ли я что-то неправильно. - person Shambhu   schedule 03.08.2017POST
, но не могу обновить существующий. - person Shambhu   schedule 03.08.2017PATCH
, но я получаю ту же ошибку. - person Shambhu   schedule 03.08.2017HttpURLConnection
не поддерживает метод PATCH и многие другие команды. Насколько я знаю, только GET, PUT, POST и DELETE и, возможно, HEAD. Если вы хотите использовать другие глаголы, вам нужно будет использовать другой HTTP-клиент, например, Apache, или этот заголовок X-HTTP-Method-Override. - person user207421   schedule 28.08.2017