简体   繁体   English

DocuSign API:尝试移动信封并出现错误

[英]DocuSign API: Trying to move envelopes and getting error

relatively new to SO so be easy on me:) SO相对较新,所以对我来说很容易:)

Anyways, I am using the C# DocuSign API to try and move some envelopes from one folder to another.无论如何,我正在使用 C# DocuSign API 尝试将一些信封从一个文件夹移动到另一个文件夹。 I'm getting an "Invalid response type."我收到“无效的响应类型”。 exception however, even though the envelopes are actually being moved as expected.然而,即使信封实际上是按预期移动的,也是例外。 Here is my code - can anyone immediately spot what I'm doing wrong here or how to call this function without getting an exception?这是我的代码 - 任何人都可以立即发现我在这里做错了什么或者如何调用这个 function 而不会出现异常?

namespace DocuSign.RetrieveEnvelopes
{
    public class Program
    {
        private static readonly EnvelopesApi _envelopesApi = new EnvelopesApi();
        private static readonly FoldersApi _foldersApi = new FoldersApi();
        private static readonly FoldersRequest _foldersRequest = new FoldersRequest();
        private static Folder targetFolder;
        private static Folder fromFolder;

        private static void Main(string[] args)
        {
            try
            {
                DocuSignUtils.ConfigureApiClient();
                Config.AccountId = DocuSignUtils.Authenticate();

                var folders = _foldersApi.List(Config.AccountId);
                _foldersRequest.EnvelopeIds = new List<string>();

                foreach (var foldr in folders.Folders)
                {
                    if (foldr.Name == "Completed") { targetFolder = foldr; }
                    else if (foldr.Name == "Sent Items") { fromFolder = foldr; }
                }

                var envelops = _foldersApi.ListItems(Config.AccountId, fromFolder.FolderId);

                foreach (FolderItem fItem in envelops.FolderItems)
                {
                    Envelope eItem = _envelopesApi.GetEnvelope(Config.AccountId, fItem.EnvelopeId);

                    if (eItem.Status == "completed")
                    {
                        _foldersRequest.EnvelopeIds.Add(eItem.EnvelopeId);

                        var docItem = _envelopesApi.GetDocument(Config.AccountId, eItem.EnvelopeId, "combined");
                        var fStream = File.Create("C:\\Temp\\data\\" + eItem.EmailSubject.ToString() + ".pdf");
                        docItem.Seek(0, SeekOrigin.Begin);
                        docItem.CopyTo(fStream);
                        fStream.Close();

                    }
                }


                if (_foldersRequest.EnvelopeIds.Count >= 1)
                {
                    FoldersResponse fResponse = _foldersApi.MoveEnvelopes(Config.AccountId, targetFolder.FolderId, _foldersRequest);
                }
                
            catch (Exception ex)
            {
                RetrieveEnvelopsErrorHandler.LogException(ex);
            }
        }
}

Note: _foldersApi is a FoldersAPI object and _foldersRequest is a FoldersRequest object with envelope ids of the envelopes I'd like to move.注意: _foldersApi 是 FoldersAPI object 和 _foldersRequest 是 FoldersRequest object ,其中包含我要移动的信封的信封 ID。 Also, I tried just calling this function directly without assigning the return value to a FoldersResponse var but it gave the same error.此外,我尝试直接调用此 function 而不将返回值分配给 FoldersResponse var,但它给出了相同的错误。

Stack Trace:堆栈跟踪:

" at DocuSign.eSign.Client.ApiClient.Deserialize(Byte[] content, Type type, IList`1 headers)\r\n   at DocuSign.eSign.Api.FoldersApi.MoveEnvelopesWithHttpInfo(String accountId, String folderId, FoldersRequest foldersRequest)\r\n   at DocuSign.eSign.Api.FoldersApi.MoveEnvelopes(String accountId, String folderId, FoldersRequest foldersRequest)\r\n   at DocuSign.RetrieveEnvelopes.Program.Main(String[] args) in C:\\DocuSign\\DocuSign.RetrieveEnvelopes\\Program.cs:line 73"

Here is corrected code with latest Nuget (SDK):这是最新的 Nuget (SDK) 的更正代码:

        FoldersApi _foldersApi = new FoldersApi(apiClient);

        FoldersRequest _foldersRequest = new FoldersRequest();
        var folders = _foldersApi.List(accountId);
        _foldersRequest.EnvelopeIds = new List<string>();

        Folder fromFolder = new Folder();
        Folder targetFolder = new Folder();
        foreach (var foldr in folders.Folders)
        {
            if (foldr.Name == "Completed") { targetFolder = foldr; }
            else if (foldr.Name == "Sent Items") { fromFolder = foldr; }
        }

        var envelops = _foldersApi.ListItems(accountId, fromFolder.FolderId);
        foreach (Folder folder in envelops.Folders)
        {
            foreach (FolderItemV2 fItem in folder.FolderItems)
            {
                Envelope eItem = envelopesApi.GetEnvelope(accountId, fItem.EnvelopeId);

                if (eItem.Status == "completed")
                {
                    _foldersRequest.EnvelopeIds.Add(eItem.EnvelopeId);

                    var docItem = envelopesApi.GetDocument(accountId, eItem.EnvelopeId, "combined");
                    var fStream = File.Create("C:\\Temp\\data\\" + eItem.EmailSubject.ToString() + ".pdf");
                    docItem.Seek(0, SeekOrigin.Begin);
                    docItem.CopyTo(fStream);
                    fStream.Close();

                }
            }
        }


        if (_foldersRequest.EnvelopeIds.Count >= 1)
        {
            FoldersResponse fResponse = _foldersApi.MoveEnvelopes(accountId, targetFolder.FolderId, _foldersRequest);
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM