У меня есть этот код, чтобы сделать HTTP Post
к Jira URL (https://xxxxxxx.atlassian.net/rest/api/2/issue/
):Java - HTTP Post Jira API - Bad Request
Object jsonMessage = arg0.getMessage().getPayload();
URL url = new URL(jiraUrl + jiraIssuePath);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
BASE64Encoder enc = new sun.misc.BASE64Encoder();
String userpassword = jiraUsername + ":" + jiraPassword;
String encodedAuthorization = enc.encode(userpassword.getBytes());
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("Authorization", "Basic " + encodedAuthorization);
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.setRequestMethod("POST");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(jsonMessage.toString());
wr.flush();
StringBuilder sb = new StringBuilder();
int HttpResult = conn.getResponseCode();
if (HttpResult == HttpsURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
System.out.println("" + sb.toString());
} else {
System.out.println(conn.getResponseMessage());
}
Если я использую HTTP Get без JSON сообщения он отлично работает, но если я использую POST отправляет сообщение JSON он вернуть мне эту ошибку:
java.io.IOException: Server returned HTTP response code: 400 for URL: https://xxxxxxx.atlassian.net/rest/api/2/issue/
я использую Почтальон App проверить заголовки (Content-Type
и Authorization
) и тело и с это приложение создает проблему в Джире.
Добавлено: Если я проверить соединение имеет параметр Method
как GET
вместо POST
.
Что я могу делать неправильно?
Может быть, остальное API может получить только доступ? – Jens
Нет, потому что, если я делаю POST с Postman App, он отлично работает. – gtx911
Проверьте тело ответчика. Может быть, это приносит некоторый свет на причину проблемы. – talex