嵌入式控制台标志视图上的错误请求

时间:2013-11-06 22:28:35

标签: docusignapi

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

登录凭据&请求信封API调用work& envelopeID是生成的。 第三步是“获取嵌入式控制台签名视图的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

有些人可以帮助我的请求体中缺少的信息导致BAD请求响应。

2 个答案:

答案 0 :(得分:0)

我无法理解您问题中的 reqBody 值,因此我只是提供一个简单的示例,说明正确的 POST收件人视图请求看起来像(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认证过程的要求,因此您可以尽早解决这个问题,因为它在开发过程中也是一个有价值的故障排除资产(当您获得时)像你得到的“错误请求”回复。

答案 1 :(得分:0)

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

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

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

"<authenticationMethod>email</authenticationMethod>"