Docusignapi Docusign API-使用模板请求签名

Docusignapi Docusign API-使用模板请求签名,docusignapi,Docusignapi,我正在尝试测试RESTAPI,以便在WCF Web服务中使用C#在通过模板引用的文档上请求签名 登录的步骤1起作用&返回accountID&baseURl 步骤2失败,请求不正确 这是我的密码: try { ... string requestBody = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" + "<accountId>" + accoun

我正在尝试测试RESTAPI,以便在WCF Web服务中使用C#在通过模板引用的文档上请求签名

登录的步骤1起作用&返回accountID&baseURl

步骤2失败,请求不正确

这是我的密码:

try {
    ...
    string requestBody = "<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" +
            "<accountId>" + accountId + "</accountId>" +
            "<status>" + "sent" + "</status>" +
            "<emailSubject>" + "API Call for Embedded Sending" + "</emailSubject>" +
            "<emailBlurb>" + "This comes from C#" + "</emailBlurb>" +
            "<templateId>" + "9A535489-0FB6-42B2-82C1-A06DA36025B4" + "</templateId>" +
            "<templateRoles>" +                       
            "<email>" + "abc@gmail.com" + "</email>" +  // NOTE: Use different email address if username provided in non-email format!
            "<name>" + "GRAVITY1003" + "</name>" +              // username can be in email format or an actual ID string
            "<roleName>" + "GRAVITY1003" + "</roleName>" +
            "</templateRoles>" +
            "</envelopeDefinition>";

    // append "/envelopes" to baseUrl and use in the request
    request = (HttpWebRequest)WebRequest.Create(baseURL + "/envelopes");
    request.Headers.Add("X-DocuSign-Authentication", authenticateStr);
    request.ContentType = "application/xml";
    request.Accept = "application/xml";
    request.ContentLength = requestBody.Length;
    request.Method = "POST";
    // write the body of the request
    byte[] body = System.Text.Encoding.UTF8.GetBytes(requestBody);
    Stream dataStream = request.GetRequestStream();
    dataStream.Write(body, 0, requestBody.Length);
    dataStream.Close();
    // read the response
    webResponse = (HttpWebResponse)request.GetResponse();------> It fails here
    sr = new StreamReader(webResponse.GetResponseStream());
    responseText = sr.ReadToEnd();
    uri = responseText;
}
catch (WebException e)
{
    using (WebResponse response = e.Response)
    {
        HttpWebResponse httpResponse = (HttpWebResponse)response;
        Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
        using (Stream data = response.GetResponseStream())
        {
            string text = new StreamReader(data).ReadToEnd();
            Console.WriteLine(text);
        }
    }
}
试试看{
...
字符串requestBody=“”+
“”+accountId+“”+
“+”已发送“+”+
用于嵌入式发送的“+”API调用“+”+
“+”这来自C++”+
“+”9A535489-0FB6-42B2-82C1-A06DA36025B4“+”+
"" +                       
"" + "abc@gmail.com“+”“+//注意:如果用户名以非电子邮件格式提供,请使用不同的电子邮件地址!
“”“+”GRAVITY1003“+”“+//用户名可以是电子邮件格式或实际的ID字符串
“+”重力1003“+”+
"" +
"";
//将“/信封”附加到baseUrl并在请求中使用
request=(HttpWebRequest)WebRequest.Create(baseURL+“/envelopes”);
添加(“X-DocuSign-Authentication”,authenticateStr);
request.ContentType=“应用程序/xml”;
request.Accept=“application/xml”;
request.ContentLength=requestBody.Length;
request.Method=“POST”;
//写下请求的主体
byte[]body=System.Text.Encoding.UTF8.GetBytes(requestBody);
Stream dataStream=request.GetRequestStream();
Write(body,0,requestBody.Length);
dataStream.Close();
//阅读回复
webResponse=(HttpWebResponse)request.GetResponse();------>它在这里失败
sr=新的StreamReader(webResponse.GetResponseStream());
responseText=sr.ReadToEnd();
uri=响应文本;
}
捕获(WebE例外)
{
使用(WebResponse=e.response)
{
HttpWebResponse httpResponse=(HttpWebResponse)响应;
WriteLine(“错误代码:{0}”,httpResponse.StatusCode);
使用(Stream data=response.GetResponseStream())
{
字符串文本=新的StreamReader(数据).ReadToEnd();
控制台写入线(文本);
}
}
}

谁能告诉我我做错了什么?我查看了API演练并对其进行了相应的编码。不知道为什么会发生这种情况。

看起来您正在研究的要点中有一个bug,错误的版本被错误地上传了。要点已经修复,问题只是缺少一个xml节点

由于在给定模板上可以有多个模板角色,因此需要有一个额外的xml节点来分隔每个角色。您需要做的是在
节点之间添加单个
xml节点

因此,您的请求主体应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<envelopeDefinition xmlns="http://www.docusign.com/restapi">
   <accountId>123456</accountId>
   <status>sent</status>
   <emailSubject>API Call for sending signature request from template</emailSubject>
   <emailBlurb>This comes from Java</emailBlurb>
   <templateId>EA64D446-3BFA-*********************</templateId>
   <templateRoles>
      <templateRole>
         <email>recipient_email_address</email>
         <name>recipient_name</name>
         <roleName>template_role_name</roleName>
      </templateRole>
   </templateRoles>
</envelopeDefinition>

123456
发送
用于从模板发送签名请求的API调用
这来自Java
EA64D446-3BFA-*********************
收件人\电子邮件\地址
收件人姓名
模板\角色\名称