Hi everyone,
can help me anyone?
I need upload image or other files to JIRA by REST API, but i cant use HttpPost method, because with this method i have problem with company proxy. I tryed this:
public void AddAttachment(String DefectId) throws IOException, JSONException {
String CHARSET = "UTF-8";
BufferedReader br = null;
Authorization();
String path = "C:\\somefile.txt";
File file = new File(path);
URL url = new URL(myServer + "/rest/api/2/issue/" + DefectId + "/attachments");
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy", 8080));
HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("Cookie", cookieValue);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("X-Atlassian-Token", "nocheck");
System.out.println(conn.getResponseCode());
System.out.println(conn.getResponseMessage());
OutputStream outputStream = conn.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, CHARSET), true);
try ( FileInputStream inputStream = new FileInputStream(file);) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.flush();
}
writer.flush();
if (200 <= conn.getResponseCode() && conn.getResponseCode() <= 299) {
br = new BufferedReader(new InputStreamReader(conn.getInputStream(),
"UTF-8"));
} else {
br = new BufferedReader(new InputStreamReader(conn.getErrorStream(),
"UTF-8"));
}
String lineOfResponse = "";
StringBuilder strBuild = new StringBuilder();
while ((lineOfResponse = br.readLine()) != null) {
strBuild.append(lineOfResponse);
}
String response = strBuild.toString();
System.out.println(response);
conn.disconnect();
br.close();
}
I have problem how a can id file(image or document) to output stream.
Authorization(by Cookies) i have in other methods and working fine.
This is how i uploaded properly, dependencies okhttp and okio
private static void upload(File file) throws Exception{
final String address = "https://domain/rest/api/2/issue/issueId/attachments";
final OkHttpClient okHttpClient = new OkHttpClient();
final RequestBody formBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(),
RequestBody.create(MediaType.parse("text/plain"), file))
.build();
final Request request = new Request.Builder().url(address).post(formBody)
.addHeader("X-Atlassian-Token", "no-check")
.addHeader("Authorization", "Basic api_token_from_your_account")
.build();
final Response response = okHttpClient.newCall(request).execute();
System.out.println(response.code() + " => " + response.body().string());
}
okhttp3 or okhttp dependency?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
File fileUpload = new File("Path to file");
/* Path to file : In windows- "C:\\Users\\Abhishek\\Downloads\\test.png"
In Linux - "/home/dir/test.png"
*/
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(URL);
/* URL : https//{jira Base Url}/rest/api/2/issue/{issueKey}/attachments
*/
String userpass = "username" + ":" + "Password";
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
postRequest.setHeader("Authorization", basicAuth);
postRequest.setHeader("X-Atlassian-Token", "nocheck");
MultipartEntityBuilder entity = MultipartEntityBuilder.create();
entity.addPart("file", new FileBody(fileUpload));
postRequest.setEntity(entity.build());
HttpResponse jiraResponse = null;
try {
jiraResponse = httpClient.execute(postRequest);
} catch (ClientProtocolException f) {
f.printStackTrace();
} catch (IOException f) {
f.printStackTrace();
}
if (jiraResponse.getStatusLine().getStatusCode() == 200) {
System.out.println("Adding attachment to JIRA passed");
Files.deleteIfExists(targetPath);
} else {
System.out.println("Adding attachment to JIRA failed");
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hey Tomas,
I think that you may implement something similar to the described on the following page:
Does it fit your needing?
Regards,
Arthur Gonçalves | Atlassian Support
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.