我正在测试一个 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/