내가 이런 식으로 해봤 및 작동 :
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);
}
}
의
중복 가능성 [자바의 HTTP 헤더를 전송하는 방법 (http://stackoverflow.com/questions/819474/how- to-send-an-http-header-in-java) –
https://studio.atlassian.com/svn/JRJC/trunk/atlassian-jira-rest-java-client/src/test/로 시작하겠습니다. java/it/JerseyIssueRestClientTest.java에 testAddAttachment 메소드가 있습니다. – mdoar
감사합니다. Mdoar. 그러나 MultipartEntity를 게시하는 방법에 관한 힌트는 아직 없습니다. –