Не удалось создать заметки о выпуске github с помощью http post call
Я пытаюсь опубликовать заметки о выпуске github через сервис Java REST. Они добились того же, написав скрипт sh и используя curl post call.
Я написал код для выполнения POST-вызова с использованием HttpUrlConnection, передавая данные JsonObject.
String postUrl = "host_name/api/v3/repos/"+ userName + "/" + project_name
+ "/releases";
URL url = new URL(postUrl);
JSONObject values = new JSONObject();
JSONObject data = new JSONObject();
values.put("tag_name", "TEST_TAG1");
values.put("target_commitish", "master");
values.put("name", "1.0");
values.put("body", "TEST Description");
values.put("draft", false);
values.put("prerelease", false);
data.put("data", values);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "token goes here");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/vnd.github.v3+json");
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(data.toString());
wr.flush();
wr.close();
Ожидаемый результат: заметки о выпуске должны быть опубликованы на github
Ошибка: {"message":"Неправильный запрос.\ N \n\"tag_name\"не был предоставлен.","Documents_url": " https://developer.github.com/enterprise/2.16/v3/repos/releases/"}
1 ответ
В соответствии с документацией GitHub API для создания релиза ниже приведен пример requestBody
{
"tag_name": "v1.0.0",
"target_commitish": "master",
"name": "v1.0.0",
"body": "Description of the release",
"draft": false,
"prerelease": false
}
Но в вашем коде вы сформировали запрос тела в следующем формате
{
"data": {
"tag_name": "v1.0.0",
"target_commitish": "master",
"name": "v1.0.0",
"body": "Description of the release",
"draft": false,
"prerelease": false
}
}
Поскольку все поля, необходимые для запроса, находятся в JSONObject values
в своем коде передайте это напрямую, вместо того, чтобы создавать другое вложение JSONObject data
,
Так по сути, замени wr.write(data.toString());
с участием wr.write(values.toString());