0

我使用 C# 在 WCF Web 服务中使用了嵌入式签名 API 的两个阶段。

登录凭据和请求信封 API 调用工作并生成信封ID。第三步是“获取嵌入式控制台标志视图的 URL”

string reqBody = "<recipientViewRequest xmlns=\"http://www.docusign.com/restapi\">" +
                 "<authenticationMethod>" + "email" + "</authenticationMethod>" +
                 "<email>" + "jay.krishnamoorthy@gmail.com" + "</email>" +     // NOTE: Use different email address if username provided in non-email format!
                 "<returnUrl>" + "http://www.docusign.com" + "</returnUrl>" +  // username can be in email format or an actual ID string
                 "<clientUserId>" +  "1001" + "</clientUserId>" +
                 "<userName>" + "Jay Krishnamoorthy" + "</userName>" +
                 "</recipientViewRequest>";

// append uri + "/views/recipient" to baseUrl and use in the request
request = (HttpWebRequest)WebRequest.Create(baseURL + uri + "/views/recipient");
request.Headers.Add("X-DocuSign-Authentication", authenticateStr);
request.ContentType = "application/xml";
request.Accept = "application/xml";
request.ContentLength = reqBody.Length;
request.Method = "POST";
// write the body of the request
byte[] body2 = System.Text.Encoding.UTF8.GetBytes(reqBody);
Stream dataStream2 = request.GetRequestStream();
dataStream2.Write(body2, 0, reqBody.Length);
dataStream2.Close();
// read the response
webResponse = (HttpWebResponse)request.GetResponse();-----> comes back with Bad request

有人可以帮助我的请求正文中缺少的信息导致错误的请求响应。

4

2 回答 2

0

我无法理解您问题中的reqBody值,因此我不对此发表评论,而是提供一个简单的示例,说明正确的POST Recipient View请求是什么样的(以 XML 格式):

POST https://{{env}}.docusign.net/restapi/{{version}}/accounts/{{acctId}}/envelopes/{{envelopeId}}/views/recipient

<recipientViewRequest xmlns="http://www.docusign.com/restapi">
  <authenticationMethod>Email</authenticationMethod>
  <email>RECIPIENT_EMAIL_ADDRESS</email>  
  <returnUrl>http://www.google.com</returnUrl>
  <clientUserId>CLIENT_USER_ID_VALUE_SPECIFIED_IN_THE_REQUEST</clientUserId>
  <userName>RECIPIENT_NAME</userName>
</recipientViewRequest>

我建议您将我在此处包含的请求 URI请求正文与您发送的内容进行比较,并根据需要调整您的内容以匹配。

此外,我建议您使用“Fiddler”之类的工具或类似的工具来检查通过网络发送的 XML 请求和响应——即,通过使用 Fiddler 检查原始 XML 来识别问题,然后更新您的代码来解决问题(即,生成/发送格式正确的请求)。能够生成原始 XML 请求/响应的跟踪是 DocuSign API 认证过程的要求,因此您最好早点而不是晚点弄清楚,因为它也是开发过程中有价值的故障排除资产(当您获得像您得到的“错误请求”响应)。

于 2013-11-06T23:33:30.210 回答
0

您的请求正文具有所有适当的元素,乍一看似乎是正确的,但是我现在看到您做错了什么。在您设置身份验证方法时的请求正文中,我看到您将其设置为:

"<authenticationMethod>" + "email" + "</authenticationMethod>"

这是不正确的。这里的值实际上需要是字符串email或者Email,你不要输入收件人的实际电子邮件地址。该authenticationMethod属性的重点是告诉系统您期望的身份验证级别。如果设置为,email那么您只是告诉系统电子邮件地址是您希望该收件人的唯一身份验证形式。所以你想要的是:

"<authenticationMethod>email</authenticationMethod>"
于 2013-11-07T23:55:00.073 回答