Я пытаюсь опубликовать приложение JARA с использованием новейшего API REST. Вот мой код:Добавить вложение в Jira через REST API
public boolean addAttachmentToIssue(String issueKey, String path){
String auth = new
String(org.apache.commons.codec.binary.Base64.encodeBase64((user+":"+pass).getBytes()));
Client client = Client.create();
WebResource webResource = client.resource(baseURL+"issue/"+issueKey+"/attachments");
FormDataMultiPart formDataMultiPart = new FormDataMultiPart();
File f = new File(path);
if(f.exists() && f.isFile()){
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
return false;
}
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum); //no doubt here is 0
}
fis.close();
bos.close();
} catch (IOException ex) {
try {
fis.close();
bos.close();
} catch (IOException e) {
return false;
}
return false;
}
byte[] bytes = bos.toByteArray();
FormDataBodyPart bodyPart = new FormDataBodyPart("file", new ByteArrayInputStream(bytes), MediaType.APPLICATION_OCTET_STREAM_TYPE);
formDataMultiPart.bodyPart(bodyPart);
}else{
return false;
}
ClientResponse response = null;
response = webResource.header("Authorization", "Basic " + auth).header("X-Atlassian-Token", "nocheck").type(MediaType.MULTIPART_FORM_DATA).accept("application/json").post(ClientResponse.class, formDataMultiPart);
System.out.println(response);
int statusCode = response.getStatus();
System.out.println(statusCode);
String resp = response.getEntity(String.class);
System.out.println(resp);
return true;
}
Однако я получаю следующий ответ:
POST http://localhost:8082/rest/api/2/issue/TEST-2/attachments returned a response status of 404 Not Found
404
XSRF check failed
проблема с ключом TEST-2 существует в моем локальном экземпляре JIRA и я могу добавить вложение «по вручную "в приложении Jira. Я знаю, что я должен добавить заголовок типа «X-Atlassian-Token: nocheck», чтобы предотвратить XSRF, но по результату я должен что-то делать неправильно. Что еще меня смущает, так это то, что 404 после проверки XSRF.
Я удалил google для ответов без успеха Может ли кто-нибудь угадать догадки о том, что я делаю неправильно?
У меня это работает на Python, используя jira-python, но не в java. Является ли клиент Rest Rest Java на https://bitbucket.org/atlassian/jira-rest-java-client/src вообще помогите – mdoar
Не совсем, я пробовал, но, учитывая, что у меня слишком много зависимостей в мой текущий проект, добавив больше причин некоторой путаницы в пути к классам. Моя единственная альтернатива, чтобы сделать сообщение самостоятельно –