2017-02-18 44 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