2016-08-31 3 views
0

У меня есть этот код, чтобы сделать 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.

Что я могу делать неправильно?

+1

Может быть, остальное API может получить только доступ? – Jens

+0

Нет, потому что, если я делаю POST с Postman App, он отлично работает. – gtx911

+0

Проверьте тело ответчика. Может быть, это приносит некоторый свет на причину проблемы. – talex

ответ

0

Можете ли вы показать деталь ответа 400?

Я пробовал код ключа и успешно выполнил запрос POST. Сервер JIRA вернет очень подробное сообщение для ответа 400, например

{ 
    "errorMessages": [ 
     "Field 'priority' is required" 
    ], 
    "errors": {} 
} 

Этот ответ может быть полезен в отношении того, как сделать почтовый запрос. Java - sending HTTP parameters via POST method easily

 Смежные вопросы

  • Нет связанных вопросов^_^