无法在C#中将瞬态文档上传到Adobe登录

时间:2017-03-28 14:59:13

标签: c# json rest adobe echosign

我试图将一个瞬态文档文件上传到Adobe注册C#,它让我的智慧最终试图让它工作。

我甚至联系了Adobe,甚至他们也不知道该怎么做。

我的代码如下:

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\"}"  

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

所有帮助将不胜感激。

编辑:

以下代码会给出一个包含库文档列表的回复,因此我知道它不是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);

2 个答案:

答案 0 :(得分:1)

这样做了。显然“文件”很糟糕但“文件”没问题。

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);

答案 1 :(得分:0)

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

最后,如果您浏览到Angular 1中的位置,它会给您带来同样的问题吗?我问,因为测试起来要轻得多,你可以看到使用F12开发人员工具正是从开放式https频道回来的内容。