[英]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.