-->

DocuSign - RestApi v2 - download document using C#

2019-03-01 06:23发布

问题:

I'm trying to retrieve a signed document via RestAPI v2 with below code.

url = baseURL + "/accounts/" + "3602fbe5-e11c-44de-9e04-a9fc9aa2aad6" + "/envelopes/" + envId + "/documents/combined";
HttpWebRequest request4 = (HttpWebRequest)WebRequest.Create(url);
request4.Method = "GET";
request4.Headers.Add("X-DocuSign-Authentication", authHeader);
request4.Accept = "application/pdf";
request4.ContentType = "application/json";
request4.ContentLength = 0;
HttpWebResponse webResponse4 = (HttpWebResponse)request4.GetResponse();

StreamReader objSR = new StreamReader(webResponse4.GetResponseStream());

StreamWriter objSW = new StreamWriter(@"C:\Users\reddy\Desktop\Docusign\test_" + envId + ".pdf");
objSW.Write(objSR.ReadToEnd());
objSW.Close();    
objSR.Close();

With above code, I'm able to save a PDF file but something is not right. Can someone help me fix my buggy code.

Downloaded Document:

Original document:

回答1:

Option 1: You can simply use the System.Net.WebClient class

string url = baseURL + "/accounts/" + accountId + "/envelopes/" + envId + "/documents/combined";
string path = @"C:\Users\reddy\Desktop\Docusign\test_" + envId + ".pdf";
using (var wc = new System.Net.WebClient())
{
    wc.Headers.Add("X-DocuSign-Authentication", authHeader);
    wc.DownloadFile(url, path);
}

Option 2 : Copy the input stream to the output FileStream

var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers.Add("X-DocuSign-Authentication", authHeader);

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var stream = File.Create(path))
        response.GetResponseStream().CopyTo(stream);
}

Option 3 : Using the DocuSign C# SDK

See full code here

var envApi = new EnvelopesApi();
var docStream = envApi.GetDocument(accountId, envelopeId, "combined");
using (var stream = File.Create(filePath))
    docStream.CopyTo(stream);

Also see this answer