java - DocuSign Java API EnvelopesApi.getDocument 返回 NULL 异常

标签 java spring-mvc docusignapi

我正在测试一个 API,该 API 应该从信封中获取文档。下面是示例代码:

@RestController
@Controller
@RequestMapping(value = "DocuSign")
public class DocusignController extends CoreController {

@RequestMapping(value = "/FetchPDF", method = RequestMethod.GET)
@ResponseBody
public MessageItem downloadDocument(Model model) throws ApiException, IOException {

    WorkArguments args = new WorkArguments();
    args.setAccountId("1e8dce91-c5....");
    args.setDocumentId("1");
    args.setEnvelopeId("ec1f77....");

    String accessToken = "eyJ0eXAiOiJNVCIsImFsZyI6I.....";
    String baseUrl = "https://demo.docusign.net/restapi";

    JSONObject obj = doWork(args, null, accessToken, baseUrl);

    MessageItem msg = new MessageItem();

    msg.setMsg("Done!");
    return msg;
}

protected JSONObject doWork(WorkArguments args, ModelMap model,
        String accessToken, String basePath) throws ApiException, IOException {

    // Data for this method
    // accessToken    (argument)
    // basePath       (argument)
    String accountId = args.getAccountId();
    String envelopeId = args.getEnvelopeId();
    String documentId = args.getDocumentId();

    ApiClient apiClient = new ApiClient(basePath);
    apiClient.addDefaultHeader("Authorization", "Bearer " + accessToken);
    EnvelopesApi envelopesApi = new EnvelopesApi(apiClient);

    System.out.println("--->Checking if anything is null...");
    if(envelopesApi == null )
        System.out.println("Enveloper API is null!");

    if(apiClient == null)
        System.out.println("The apiClient is null!");
    // Step 1. EnvelopeDocuments::get.
    // Exceptions will be caught by the calling function
   byte[] results = envelopesApi.getDocument(accountId, envelopeId, documentId);

    String mimetype = ".pdf";
    String docName = "success"; 
    ... etc.

当我用我的其余客户端测试它时,我不断收到以下错误:

Type Exception Report

Message Request processing failed; nested exception is com.sun.jersey.api.client.ClientHandlerException

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.sun.jersey.api.client.ClientHandlerException org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Root Cause

com.sun.jersey.api.client.ClientHandlerException com.docusign.esign.client.auth.OAuth.updateAccessToken(OAuth.java:111) com.docusign.esign.client.auth.OAuth.applyToParams(OAuth.java:99) com.docusign.esign.client.ApiClient.updateParamsForAuth(ApiClient.java:1209) com.docusign.esign.client.ApiClient.getAPIResponse(ApiClient.java:1094) com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:1158) com.docusign.esign.api.EnvelopesApi.getDocument(EnvelopesApi.java:2624) com.docusign.esign.api.EnvelopesApi.getDocument(EnvelopesApi.java:2556) delaware.gov.dti.ice.esignprototypev1.controller.DocusignController.doWork(DocusignController.java:82) delaware.gov.dti.ice.esignprototypev1.controller.DocusignController.downloadDocument(DocusignController.java:52) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Root Cause

java.lang.NullPointerException com.docusign.esign.client.auth.OAuth.updateAccessToken(OAuth.java:109) com.docusign.esign.client.auth.OAuth.applyToParams(OAuth.java:99) com.docusign.esign.client.ApiClient.updateParamsForAuth(ApiClient.java:1209) com.docusign.esign.client.ApiClient.getAPIResponse(ApiClient.java:1094) com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:1158) com.docusign.esign.api.EnvelopesApi.getDocument(EnvelopesApi.java:2624) com.docusign.esign.api.EnvelopesApi.getDocument(EnvelopesApi.java:2556) delaware.gov.dti.ice.esignprototypev1.controller.DocusignController.doWork(DocusignController.java:82) delaware.gov.dti.ice.esignprototypev1.controller.DocusignController.downloadDocument(DocusignController.java:52) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我正在使用 docusign-esign-java 版本 3.2.0,这是目前最新的。我能够在使用其余客户端时获取文档,所以我知道至少我的帐户 ID、访问 token 和文档 ID(和模板 ID)是正确的。另外,我的解决方案基于以下 DocuSign 引用页面 Downloading Envelope Documents并使用提供的下载代码来双重检查我是否遗漏了任何东西。

此外,我检查了 apiClient 或 EnvelopesApi 对象是否为空,但它们不是,所以我遇到了问题

byte[] results = envelopesApi.getDocument(accountId, envelopeId, documentId);

由于某种原因,似乎给出了空指针异常。知道为什么吗?

最佳答案

我更新了现有的 example没有 Spring 来测试 3.2.0 版本,它似乎对我来说工作得很好,并且没有抛出任何异常。如果它可以在没有 Spring 的情况下工作,那么它也可以与 Spring 一起工作,因此 SDK 中看起来不会有任何问题。

public void listDocuments(String envelopeId) throws ApiException, IOException {

        this.checkToken();
        EnvelopesApi envelopeApi = new EnvelopesApi(this.apiClient);

        EnvelopeDocumentsResult envelopeDocumentsResult = envelopeApi.listDocuments(this.getAccountId(), envelopeId);
        List<EnvelopeDocument> envelopeDocuments = envelopeDocumentsResult.getEnvelopeDocuments();

        for (EnvelopeDocument envelopeDocument : envelopeDocuments) {

            System.out.println("documentId " + envelopeDocument.getDocumentId());
            envelopeApi.getDocument(this.getAccountId(), envelopeId, envelopeDocument.getDocumentId());
        }

    }

关于java - DocuSign Java API EnvelopesApi.getDocument 返回 NULL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59431503/

相关文章:

java - 如何在 spring-data-rest 中使用 Pageable 作为 get-query 参数?

c# - 使用 Docusign API 使用 c# sdk 将多个文档添加到信封

ios - DocuSign iOS 原生签名

docusignapi - 保存由 DocuSign Connect 发送的 PDF

java - java中的矩阵操作

java - 如何为 Android 实现后台套接字监听器?

java - 等待/通知的奇怪 Java 行为

Java JButton - MouseMotionListener ( MouseMoved ) 鼠标悬停效果

java - 是否可以在 JHipster 应用程序中获取用户的时区?

Java - 如何使用postman插入数据