0

これは私の C#.net コードです。一時的なドキュメント ID を作成すると、署名のためにドキュメントを送信し、空のファイルを受け取ります。空のファイルに対して一時的なドキュメント ID が作成されると思います。それを手伝ってくれませんか?

public getDocumentId getTransientDocumentId(string accessToken, string path1,string filename)
    {
        getDocumentId objGet = new getDocumentId();                   

        var nvc = new NameValueCollection
        {
            {"File", path1},
            {"Content-Type", "multipart/form-data"},
            {"Mime-Type", "application/pdf"},
            {"File-Name", filename}
        };

        string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
        byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
        byte[] boundarybytesF = System.Text.Encoding.ASCII.GetBytes("--" + boundary + "\r\n");  // the first time it itereates, you need to make sure it doesn't put too many new paragraphs down or it completely messes up poor webbrick.  

        HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("https://api.na1.echosign.com/api/rest/v5/transientDocuments");
        wr.Method = "POST";
        wr.Headers["Access-Token"] = string.Format(accessToken);
        wr.Headers["Authorization"] = string.Format("Bearer");
        wr.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17";
        wr.KeepAlive = true;
        wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
        wr.AllowWriteStreamBuffering = true;

        wr.ContentType = "multipart/form-data; boundary=" + boundary;

        Stream rs = wr.GetRequestStream();


        bool firstLoop = true;
        string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
        foreach (string key in nvc.Keys)
        {
            if (firstLoop)
            {
                rs.Write(boundarybytesF, 0, boundarybytesF.Length);
                firstLoop = false;
            }
            else
            {
                rs.Write(boundarybytes, 0, boundarybytes.Length);
            }
            string formitem = string.Format(formdataTemplate, key, nvc[key]);
            byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
            rs.Write(formitembytes, 0, formitembytes.Length);
        }
        rs.Write(boundarybytes, 0, boundarybytes.Length);
        string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
        string header = string.Format(headerTemplate,  "File", new FileInfo(path1).Name, "application/octet-stream");
        byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
        rs.Write(headerbytes, 0, headerbytes.Length);
        FileStream fileStream = new FileStream(path1, FileMode.Open, FileAccess.Read);
        byte[] buffer = new byte[fileStream.Length];
        int bytesRead = 0;
        while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
        {
            rs.Write(buffer, 0, bytesRead);
        }
        fileStream.Close();
        byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
        rs.Write(trailer, 0, trailer.Length);
        rs.Close();
        try
        {
            var httpResponse = (HttpWebResponse)wr.GetResponse();
            using (var sr = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = sr.ReadToEnd();
                var jsonSerialization = new JavaScriptSerializer();
                var dictObj = jsonSerialization.Deserialize<Dictionary<string, dynamic>>(result);

                if (dictObj.Count > 0)
                {
                    objGet.transientDocumentId = Convert.ToString(dictObj["transientDocumentId"]);
                    objGet.success = "true";
                }
                else
                {
                    objGet.success = "false";
                }
            }     
        }
        catch (Exception ex)
        {
            objGet.success = "false: " + ex.Message.ToString();
        }
        return objGet;
    }
4

1 に答える 1

0

transientDocument を使用して契約書に添付したドキュメントを取得する目的で、GET /agreements/{agreementId}/documents API 呼び出しを使用してこれらのドキュメントを取得できます。

しかし、質問に「一時的なドキュメントを取得する方法」とあるように。なんらかの API を使用して transientDocument を取得する方法はありません。transientDocument は一時的な目的であり、通常は単一の契約書を作成するために使用され、有効期間が短い (わずか 7 日間) ためです。アップロードされたドキュメントを再利用して複数の契約書を作成し、そのドキュメントを個別に取得できるようにする場合は、POST /libraryDocumentを使用する代わりに libraryDocument を作成する必要があります。

これらのライブラリ ドキュメントに対して GET API 呼び出しを実行して、ドキュメント、auditTrail などのさまざまな詳細を取得できます。ライブラリ ドキュメントについてより理解を深めるためにたどることができるドキュメント リンクは次のとおりです

于 2016-12-06T18:05:53.947 に答える