2013-02-05 3 views
0

zendesk에 첨부 파일을 업로드하려고합니다. 당신이 사용해야하는 API 문서에서자바가있는 zendesk에 첨부 파일 업로드

curl -u username:password -H "Content-Type: application/binary" \ 
--data-binary @file.dat -X POST \ 
"https://helpdesk.zendesk.com/api/v2/uploads.json?filename=myfile.dat&token=      {optional_token}" 

나는 자바로 똑같은 일을하려하고있다. 파일을 업로드하고 올바른 json 응답을받을 수 있습니다. 그러나 zendesk 서버에서 파일을 열면 파일이 인식되지 않습니다. 커맨드 라인에서 같은 파일을 컬 (curl)로 업로드하면 모든 것이 정상적으로 작동합니다. 여기서 내가 뭘 잘못하고 있니? 이 파일을 업로드하는 데 사용하는 Java 코드입니다. 나는 java client for zendesk

에 노력하고있다

public static void main(String[] args) throws IOException { 
    File file = new File("C:\\Users\\user\\Documents\\zendesk2\\Zendesk\\src\\main\\resources\\scrat.jpg"); 
    try { 
     MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
     multipartEntity.addPart("filename", new StringBody(file.getName())); 
     FileBody fileBody = new FileBody(file, "application/octet-stream"); 
     multipartEntity.addPart("attachment", fileBody); 

     // -u admin:password 
     Credentials credentials = new UsernamePasswordCredentials("username", "passw"); 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY, credentials); 

     // -X POST 
     HttpPost httpPost = new HttpPost("https://testserver.zendesk.com/api/v2/uploads.json"); 

     // @ - absolute path 
     httpPost.setEntity(multipartEntity); 

     // process response 
     HttpResponse response = httpClient.execute(httpPost); 

     HttpEntity resEntity = response.getEntity(); 

     if (resEntity != null) { 
      long len = resEntity.getContentLength(); 
      if (len != -1 && len < 2048) { 
// this result is being parsed with gson.... 
       System.out.println(EntityUtils.toString(resEntity)); 
      } else { 
       // Stream content out 
      } 
     } 

     httpClient.getConnectionManager().shutdown(); 

    } catch (Exception e) { 
     //-f, fail silently} 

    } 
} 

답변

1

당신은 코드의 현재 0.0.3-SNAPSHOT 버전을 사용하여 첨부 파일을 업로드 할 수 있습니다. 가까운 장래에 더 많은 기능을 추가 할 것입니다. 여기

는 API가 작동하는 현재의 방식에 몇 가지 예제 코드 :이 도움이

ZenDesk zd = new ZenDesk.Builder("https://{{your domain}}.zendesk.com") 
     .setUsername("...") 
     .setToken("...") // or .setPassword("...") 
     .build(); 

byte[] contents = new byte[file.length()]; 
FileInputStream fis = new FileInputStream(fis); 
fis.read(contents); 
fis.close(); 

Attachment.Upload upload = zd.createUpload(file.getName(), "application/binary", contents); 

zd.close(); 

희망 (위의 샘플 코드는 예외에 대한 정리하는 있지 않으며,하지만 당신에게 기본적인 방법을 제공한다 API가 작동 함)

+0

이 잘하지만 전체 예가 아니다? 논리적 인 다음 단계는 어떻게 든 주어진 티켓에서 업로드를 사용 가능하게하는 것입니다. –

0

나는 이것이 오래되었다는 것을 알고있다. 그러나 이것을하는 방법을 생각해 내는데 잠시 시간이 걸렸다.

  1. 파일을 티켓에 첨부하려면 3 단계 프로세스입니다. 하나가 존재하지 않으면 티켓을 만들고 티켓 번호는 입니다.
  2. 토큰 속성을 사용하여 업로드를 반환하는 특정 파일 형식 등에 대한 업로드를 만듭니다.
  3. 단일 토큰 목록이 포함 된 주석으로 티켓 ID를 참조하여 티켓을 업데이트하십시오.

Ticket ticket = zd.createTicket(ticket); Attachment.Upload upload = zd.createUpload(fileName, "application/binary", content); List tokens = new ArrayList<>(); tokens.add(upload.getToken()); Comment comment = new Comment(); comment.setBody("My upload"); comment.setTokenks(tokens); Ticket ticket = new Ticket(); ticket.setId(ticketId); ticket.setComment(comment); zd.upateTicket(ticket);

관련 문제