2013-12-13 2 views
0
우리는 REST API를 V2의 Add document 방법을 사용하여 DocuSign의 봉투에 PDF 파일을 추가 할 수 파이썬과 요청 라이브러리를 사용하고

: 그것에 대해 1에서 100 PDF 파일을 제외하고, 이것은 대부분의 경우 우리를 위해 일했다DocuSign에 PDF를 어떻게 제공해야합니까?

response = requests.put(
    '<base URL>/envelopes/<envelope ID>/documents/<next document ID>', 
    files={'document': <the PDF file object>}, # <- added to the request's body 
    headers=self._get_headers(
     { 
      'Content-Disposition': 'document; filename="the-file.pdf";' 
     } 
    ), 
    timeout=60 
) 

을 API를 통해 승인되지 않았습니다. 이 문제가 발생하면 사용자에게 작동하는 DocuSign UI를 통해 직접 PDF를 업로드하도록 알려줍니다. 위의 링크가 Add document 페이지에있는 예제 요청 위에 나타나는 Document params 링크를 (지원의 도움을 받아) 묻는 메시지가 표시되었습니다. 이 페이지에는 documentBase64 속성과 다른 여러 필드가 표시됩니다. 모든 필드가 지정된 상태에서이 형식으로 문서를 제공하려면 어떻게해야합니까? 위의 통화에서 파일을 files={'document': <JSON-encoded object>} 또는?로 바꿔야합니까? 나는 현재 문서를 추가하는 방법을 알 수 없다. 내가 놓친 다른 방법이 있습니까?

+0

[DocuSign의 API 연습 (http://iodocs.docusign.com/apiwalkthroughs)]을 보았습니까? 그들은 REST API의 9 가지 공통 유스 케이스를 가지고 있습니다. 각각 6 가지 언어로 작성되었으며 파이썬은 그 중 하나입니다. 연습 # 4 (그리드의 가운데 왼쪽)를 보면 해당 예제가 문서를 제공하는 방법을 알 수 있습니다. 한가지 차이점은'Content-Disposition' 헤더에'document' 대신'file'으로 설정하는 것입니다. 나는 당신의 가끔과 관련이 있는지 궁금하네요? – Ergin

+0

@Ergin - 고마워, 나는 그걸 보았지만 "문서 추가"워크 플로우가 누락되었습니다. IIRC에서 DocuSign 통합 개발 책임자는 "필자가 첨부 파일이라고 부르는 모든 이름을"필자의 경우 "문서"인'Content-Disposition' 헤더에 제공해야한다고 말했습니다. 첨부 파일의 이름을 "문서"로 지정하면 오류가 발생하지 않을 것입니다. –

+0

오케이 내가 Content-Disposition 헤더의 첫 번째 매개 변수를 잘못 이해하고 있었지만 그 이름이 첨부 파일 일뿐임을 알지 못했습니다. 흠, 아파치를 통해 업로드하는 데 문제가있는 문서와 작동하는 것으로 보이는 다른 문서간에 차이가 있습니까? 해당 PDF의 바이트 인코딩 또는 보안 설정과 다른 점은 무엇입니까? – Ergin

답변

3

나머지 API를 사용하여 초안 봉투에 문서를 추가하는 두 가지 방법으로 지금있다 같습니다 :

  1. 를 사용하여 여러 부분으로 요청, 첫 번째 부분은 JSON 본체와 각을 포함 후속 부분에는 인 코드되지 않은 형식의 문서 바이트가 들어 있습니다. 이 접근법의 예는 REST API 가이드 (http://www.docusign.com/sites/default/files/REST_API_Guide_v2.pdf)의 136-137 페이지에 나와 있습니다.

  2. 정상적인 요청 (즉,하지 여러 부분 요청) 및 공급 문서 바이트를 사용 base64 인코딩 형식 요청에 각각 문서 객체 documentBase64 속성 값으로서 . (이것은 최근 2013 년 12 월 API 출시/업데이트의 새로운 것으로 보인다.) 당신이 당신의 질문에 포함 된 한 정보를 바탕으로

, 당신이 현재 접근법 # 1을 사용하고 생각한다. 위에서 설명한 것처럼 두 가지 방법의 주된 차이점은 요청의 일반적인 구조이며 ALSO - 접근 # 1은 문서 바이트가 암호화되지 않은 것으로 예상하고 접근 # 2는 문서 바이트가 base64로 인코딩 될 것으로 예상합니다. 귀하의 문제가 파일 인코딩과 관련이 있다고 생각됩니다. 즉, 접근 # 1을 사용하고 있고 파일이 인코딩 된 경우 문제가 발생할 가능성이 큽니다.

+0

접근법 2에 대한 자습서가 있습니까? –

+0

나는 어떤 자습서도 모른다.하지만 정말 간단합니다. 문서의 base64 인코딩 된 바이트 스트림을 생성 한 다음이 문자열을 documentBase64 속성의 값으로 요청에 넣으면됩니다. "documentBase64"에 대한 REST API 가이드 (https://10226ec94e53f4ca538f-0035e62ac0d194a46695a3b225d72cc8.ssl.cf2.rackcdn.com/rest-api-guide-v2.pdf)를 검색하십시오 - p112에서이 속성이 " 이름 "W"documentId "를 요청의. 서 오브 젝트에 추가하십시오. "documents": [{ "documentId": "NUMBER", "이름": "STRING", "documentBase64": "BASE_64_ENCODED_BYTE_STREAM" } –

+0

감사합니다. 같은 날에 일 했어, 여기를 잊어 버렸어. 나는 정확히 당신이 언급 한 것과 같은 방식으로 그것을 성취했습니다. –

관련 문제