2012-06-06 9 views
0

JIRA REST API에 대한 요청 및 응답 형식이 JSON 형태임을 잘 알고 있습니다. http://example.com:8080/jira/rest/api/2/attachment 유형의 URL을 사용하여 업로드 된 파일의 첨부 파일 세부 정보를 성공적으로 검색했습니다.REST API를 통해 JIRA에 파일 업로드

이제 동일한 REST API를 사용하여 JIRA로 파일을 업로드해야합니다. 나는 자바 클라이언트와 그것의 명시된 문신을 가지고 멀티 파트 입력을 게시 할 필요가 MultiPartEntity을 사용하여 자신의. JSON 요청으로 X-Atlassian-Token: nocheck이라는 헤더를 제출하는 방법을 모르겠습니다. 문서 검색하기 나는 단지 컬을 기반으로 한 요청 예제를 가지고있다. 누구든지이 문제를 해결하도록 도와 줄 수 있습니까?

+1

중복 가능성 [자바의 HTTP 헤더를 전송하는 방법 (http://stackoverflow.com/questions/819474/how- to-send-an-http-header-in-java) –

+0

https://studio.atlassian.com/svn/JRJC/trunk/atlassian-jira-rest-java-client/src/test/로 시작하겠습니다. java/it/JerseyIssueRestClientTest.java에 testAddAttachment 메소드가 있습니다. – mdoar

+0

감사합니다. Mdoar. 그러나 MultipartEntity를 게시하는 방법에 관한 힌트는 아직 없습니다. –

답변

1

내가 이런 식으로 해봤 및 작동 :

public static void main(String[] args) throws Exception { 
    File f = new File(args[ 0 ]); 
    String fileName = f.getName(); 
    String url = "https://[JIRA-SERVER]/rest/api/2/issue/[JIRA-KEY]/attachments"; 

    CloseableHttpClient httpClient = HttpClients.createDefault(); 
    HttpPost post = new HttpPost(url); 
    post.setHeader("Authorization", basicAuthHeader("username", "password")); 
    post.setHeader("X-Atlassian-Token", "nocheck"); 
    HttpEntity reqEntity = MultipartEntityBuilder.create() 
      .setMode(HttpMultipartMode.BROWSER_COMPATIBLE) 
      .addBinaryBody("file", 
       new FileInputStream(f), 
       ContentType.APPLICATION_OCTET_STREAM, 
       f.getName()) 
      .build(); 
    post.setEntity(reqEntity); 
    post.setHeader(reqEntity.getContentType()); 
    CloseableHttpResponse response = httpClient.execute(post); 
} 

public static String basicAuthHeader(String user, String pass) { 
    if (user == null || pass == null) return null; 
    try { 
     byte[] bytes = (user + ":" + pass).getBytes("UTF-8"); 
     String base64 = DatatypeConverter.printBase64Binary(bytes); 
     return "Basic " + base64; 
    } 
    catch (IOException ioe) { 
     throw new RuntimeException("Stop the world, Java broken: " + ioe, ioe); 
    } 
} 
관련 문제