2016-08-31 4 views
0

私はのJira URL(https://xxxxxxx.atlassian.net/rest/api/2/issue/)にHTTP Postを行うには、このコードを持っている:私はHTTPをJSONメッセージなしで取得します使用している場合は、それが正常に動作のJava - HTTPポストのJIRA API - 不正な要求

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()); 
    } 

を、

java.io.IOException: Server returned HTTP response code: 400 for URL: https://xxxxxxx.atlassian.net/rest/api/2/issue/

は、私は、ヘッダー(Content-TypeAuthorization)を確認するためにポストマンのApp使用し、ボディとと:私はJSONメッセージを送るPOSTを使用している場合、それは私にこのエラーを返しますそのアプリはJiraで問題を作成します。

を追加しました:私は接続を検査した場合 それはGET代わりのPOSTのようなパラメータMethodを持っています。

どうしたらいいですか?

+1

おそらく残りのAPIはgetでのみアクセスできますか? – Jens

+0

いいえ、私がPostman AppでPOSTを行うと正常に動作します。 – gtx911

+0

レスポンスのボディをチェックします。たぶんそれは問題の原因にいくつかの光をもたらすでしょう。 – talex

答えて

0

400応答の詳細を表示できますか?

私はいくつかのキーコードを試して、正常にPOSTリクエストを行いました。 JIRAサーバは、400レスポンスのような非常に詳細なメッセージを返します

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

この回答は投稿リクエストの作成方法に役立ちます。 Java - sending HTTP parameters via POST method easily

関連する問題