3

我正在尝试将临时文档文件上传到 C# 中的 Adob​​e Sign,它让我拼命尝试让它工作。

我什至联系了 Adob​​e,甚至他们都不知道该怎么做。

我的代码如下:

if (!File.Exists(@"documents\1-Registration Form.pdf"))
{
    return;       
}

Models objGetData = new Models();

RestClient objClient = new RestClient("https://api.na1.echosign.com:443/api/rest/v5");

RestRequest objRequest = new RestRequest("transientDocuments", Method.POST);

objRequest.AddFile("file", File.ReadAllBytes(@"documents\1-Registration Form.pdf"), "1-Registration Form.pdf");
objRequest.AddHeader("Access-Token", "-My Token Here-");
objRequest.RequestFormat = DataFormat.Json;

IRestResponse objResponse = objClient.Execute(objRequest);

var content = objResponse.Content;

JObject jsonLinq = JObject.Parse(content);

try
{
    var objResultObjects = AllData(jsonLinq).First(c => c.Type == JTokenType.Array && c.Path.Contains("libraryDocumentList")).Children<JObject>();
}
catch(Exception ex)
{
    ex.LogExceptionToDatabase();
}

return;

这是我最近一次尝试的结果:

 "{\"code\":\"NOT_FOUND\",\"message\":\"Resource not found\"}"  

我通常会收到 Bad request 说文件不存在或未找到错误,但它们并不总是相同的。

所有帮助将不胜感激。

编辑:

下面的代码将给出一个包含库文档列表的响应,所以我知道它不是 URL。

var objGetData = new Models();
        var objClient = new RestClient("https://api.na1.echosign.com:443/api/rest/v5");
        var objRequest = new RestRequest("libraryDocuments", Method.GET);
        objRequest.AddHeader("Access-Token", "- My Key -");
        objRequest.RequestFormat = DataFormat.Json;
        objRequest.AddBody(objGetData);
        IRestResponse objResponse = objClient.Execute(objRequest);
        var content = objResponse.Content;
        JObject jsonLinq = JObject.Parse(content);

解决方案:

var objClient = new RestClient(@"https://api.na1.echosign.com:443/api/rest/v5/");
            var objRequest = new RestRequest(@"transientDocuments", Method.POST);
                var thisFile = File.ReadAllBytes( @"documents\1-Registration Form.pdf");
            objRequest.AddFile("File", File.ReadAllBytes( @"documents\1-Registration Form.pdf"), "1-Registration Form.pdf");
            objRequest.AddHeader("Access-Token", "-MyToken-");
            objRequest.RequestFormat = DataFormat.Json;
            IRestResponse objResponse = objClient.Execute(objRequest);
            var content = objResponse.Content;
            JObject jsonLinq = JObject.Parse(content);
4

2 回答 2

2

这做到了。显然“文件”是坏的,但“文件”是好的。

var objClient = new RestClient(@"https://api.na1.echosign.com:443/api/rest/v5/");
            var objRequest = new RestRequest(@"transientDocuments", Method.POST);
                var thisFile = File.ReadAllBytes( @"documents\1-Registration Form.pdf");
            objRequest.AddFile("File", File.ReadAllBytes( @"documents\1-Registration Form.pdf"), "1-Registration Form.pdf");
            objRequest.AddHeader("Access-Token", "-MyToken-");
            objRequest.RequestFormat = DataFormat.Json;
            IRestResponse objResponse = objClient.Execute(objRequest);
            var content = objResponse.Content;
            JObject jsonLinq = JObject.Parse(content);
于 2017-03-28T17:28:25.923 回答
0

不确定 URI 是否正确,请检查 RestClient 末尾缺少的“/”(不应该但仍然需要)。

最后,如果您浏览到 Angular 1 中的位置,它会给您同样的问题吗?我问,因为这测试起来要轻松得多,并且您可以使用 F12 开发人员工具确切地看到从开放的 https 通道返回的内容。

于 2017-03-28T15:24:51.983 回答