2016-08-31 8 views
0
나는 HTTP Post 락스 A와 URL을 수행하는 코드 (https://xxxxxxx.atlassian.net/rest/api/2/issue/)이

: 잘 작동 내가 JSON 메시지없이 HTTP 가져 오기를 사용하는 경우자바 - HTTP 포스트 락스의 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)을 확인하는 우편 배달 앱 사용하고 몸에 : 나는 JSON 메시지를 보내는 POST를 사용하는 경우 그러나 그것은 나에게이 오류를 반환 그 App은 Jira에서 이슈를 만듭니다.

추가 : 나는 연결을 검사하는 경우 이 매개 변수 GET 대신 POST 같은 Method있다.

내가 뭘 잘못하고 있니?

+1

나머지 API는 get으로만 액세스 할 수 있습니까? – Jens

+0

아니, 왜냐하면 내가 우편 배달부 애플 리케이션과 함께 그것을 잘 작동합니다. – gtx911

+0

응답 본문을 확인하십시오. 어쩌면 문제의 원인을 밝힐 수 있습니다. – talex

답변

0

400 응답 세부 정보를 표시 할 수 있습니까?

일부 키 코드를 시도했으며 POST 요청을 성공적으로 완료했습니다. JIRA 서버는 400 응답에 대해 매우 상세한 메시지를 반환합니다.

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

이 답변은 게시물 요청을하는 방법에 유용 할 수 있습니다. Java - sending HTTP parameters via POST method easily