2017-02-18 39 views
0

我试图上传使用第三方API(实际上的Zendesk)本地文件(一个或多个),可能有人请帮助我了解如何端口被提供到RestSharp移植卷曲-F到RestSharp

的例子卷曲商提供的是

卷曲例如:

curl https://{subdomain}.zendesk.com/api/v2/help_center/articles/{id}/attachments.json \ -F "inline=true" -F "[email protected]" \ -v -u {email_address}:{password} -X POST 

我一直在试图与AddFile添加它,也可以作为参数,但我一直运行到500内部服务器错误。

我的代码正试图完成同样的事情如上卷曲基本上是这样的:

var attachmentRequest = new RestRequest(); 

var attachmentURL = "api/v2/help_center/articles/" + article.id + "/attachments.json"; 
var attachmentPath = articlePath + "\\" + attachment.file_name; 

attachmentRequest.Resource = attachmentURL; 
attachmentRequest.Method = Method.POST; 
attachmentRequest.AddParameter("inline", attachment.inline); 
attachmentRequest.AddFile(attachment.file_name, attachmentPath); 

var attachmentResponse = client.Execute(attachmentRequest); // returns status code 500 

任何帮助是极大的赞赏,我经历了很多的信息搜索,关于移植这些要求,以及两个卷曲和RestSharp文档,我根本无法弄清楚这一点。

更新2月20日:我仍然无法弄清楚这一点。在此期间,因为我需要一个解决方案,我实际上正在调用curl可执行文件来完成此操作。当然,如果有人通过RestSharp解决这个问题,我会非常感激。

回答

0

我能够与供应商(Zendesk)取得联系并查看此请求发生了什么。事实证明,我所需要做的就是确保有效载荷与cURL相匹配,参数名称为“file”而不是文件名。我的原始代码生成了一个名为(像我的AddFile调用一样)导致错误的文件名的参数。因此,它是如此简单:

attachmentRequest.AddFile("file", attachmentPath); 

显然,服务器需要一个名为“文件”的参数,并能够成功地读取来自文件元数据的文件名。

0

cUrl将其标识为多部分/表单请求。查看详细一点的以下

https://blog.tyrsius.com/restsharp-file-upload/

我相信你正在寻找使用代码行是

request.AlwaysMultipartFormData = true; 

林有类似的要求摆弄现在,所以生病后我的结果。

+0

这实际上没有做任何事情,但谢谢你试图帮助。 – Daex