com.sun.jersey.api.client.ClientHandlerException 尝试在 DocuSign 上制作信封时 API

com.sun.jersey.api.client.ClientHandlerException when trying to make an Envelope on DocuSign API

那是我的代码,我正在尝试在我的应用程序中进行嵌入式发送,我必须从 API usage examples 中解构一些代码(在我看来,这可能会更好,因为它有很多代码重用对实际应用很有用,但对于展示可能的用法却很糟糕)。我知道我的代码充满了最糟糕的做法,但 objective 现在只有一个工作概念,我稍后会处理代码。

ApiClient apiClient = new ApiClient(ApiClient.DEMO_REST_BASEPATH);
OAuthToken token = apiClient.generateAccessToken(
        "***", 
        "***", 
        code);
UserInfo userInfo = apiClient.getUserInfo(token.getAccessToken());
apiClient.setBasePath(userInfo.getAccounts().get(0).getBaseUri()+"/restapi");
apiClient.addDefaultHeader("Authorization", "Bearer " + token.getAccessToken());    

// Make the envelope
String accountId = userInfo.getAccounts().get(0).getAccountId();
EnvelopesApi envelopesApi = new EnvelopesApi(apiClient);
String filePath = "***";
EnvelopeDefinition env = makeEnvelope(filePath);
EnvelopeSummary results = envelopesApi.createEnvelope(accountId, env);
String envelopeId = results.getEnvelopeId();

// Create the sender view
// Set the URL where you want the recipient to go once they are done signing;
// this should typically be a callback route somewhere in your app
ReturnUrlRequest viewRequest = new ReturnUrlRequest();
viewRequest.setReturnUrl("***");
ViewUrl viewUrl = envelopesApi.createSenderView(accountId, envelopeId, viewRequest);

// Switch to Recipient and Documents view if requested by the user
String url = viewUrl.getUrl();

当我调用 envelopesApi.createEnvelope(accountId, env) 时发生错误,我得到一个 com.sun.jersey.api.client.ClientHandlerException。我真的不知道如何解决这个问题,因为您可能会在下面的日志中看到没有任何错误消息,而且我找不到我可能做错了什么。我已经修改了我的代码,以检查在从示例中获取我需要的代码条的过程中我是否遗漏了一些东西,我确实纠正了这个过程中的一些错误,但问题仍然存在。请注意,我的应用程序在 java 8 上运行,所以我使用的是 DocuSign API 版本 3.6.0,这是日志:

com.sun.jersey.api.client.ClientHandlerException
    at com.docusign.esign.client.auth.OAuth.updateAccessToken(OAuth.java:115)
    at com.docusign.esign.client.auth.OAuth.applyToParams(OAuth.java:103)
    at com.docusign.esign.client.ApiClient.updateParamsForAuth(ApiClient.java:1256)
    at com.docusign.esign.client.ApiClient.getAPIResponse(ApiClient.java:1139)
    at com.docusign.esign.client.ApiClient.invokeAPI(ApiClient.java:1205)
    at com.docusign.esign.api.EnvelopesApi.createEnvelope(EnvelopesApi.java:846)
    at com.docusign.esign.api.EnvelopesApi.createEnvelope(EnvelopesApi.java:787)
    at core.controle.arquivo.AtvEnviaEnvelope.execute(AtvEnviaEnvelope.java:60)
    ...
Caused by: java.lang.NullPointerException
    at com.docusign.esign.client.auth.OAuth.updateAccessToken(OAuth.java:113)
    ... 63 more

请通过此 link https://support.docusign.com/s/contactSupport?language=en_US 向 DocuSign 开发人员支持提交案例,我们很乐意与您一起解决问题。

我终于明白了!!我少了一个

apiClient.setAccessToken(token.getAccessToken(), token.getExpiresIn());

就在 apiClient.addDefaultHeader 之前,如图所示 here

为了使用它

apiClient.setOAuthBasePath(OAUTH_BASE_URL);

行前OAuthToken token = apiClient.generateAccessToken

我后来发现(遗憾的是我不记得在哪里)只有在没有向 apiClient 对象提供访问令牌的情况下才会到达我遇到错误的代码区域

DocuSing SDK 文档需要处理