2017-02-18 2 views
0

Ich versuche, lokale Datei (en) mit dem 3rd-Party-API (eigentlich Zendesk) zu laden, könnte mir bitte jemand helfen zu verstehen, wie das Beispiel cURL-Port, der in RestSharp bereitgestellt wurdePorting cURL -F in RestSharp

cURL Beispiel, das vorgesehen ist:

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 

ich habe versucht, es mit AddFile hinzuzufügen, auch als Parameter, aber ich erhalte in 500 Internal Server Error ausgeführt wird.

Mein Code, der die gleichen wie oben cURL zu erreichen versucht, das ist im Grunde:

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 

Jede Hilfe wird sehr geschätzt, ich durch eine Vielzahl von Informationen über die Portierung diese Anforderungen durchsucht, sowie beide cURL und RestSharp Dokumentation und ich kann das einfach nicht herausfinden.

Update 20. Februar: Ich kann immer noch nicht herausfinden. In der Zwischenzeit, da ich eine Lösung brauche, rufe ich die Curl ausführbar dazu auf, dies zu erreichen. Natürlich wäre ich sehr dankbar, wenn jemand stattdessen Einsicht in RestSharp hätte.

Antwort

0

Ich konnte den Anbieter (Zendesk) kontaktieren und überprüfen, was mit dieser Anfrage passiert. Es stellte sich heraus, dass ich nur sicherstellen musste, dass die Payload der Spezifikation gemäß cURL mit dem Parameternamen "file" im Gegensatz zum Dateinamen entspricht. Mein ursprünglicher Code erzeugte einen Parameter, der wie der Dateiname aufgerufen wurde (gemäß meinem AddFile-Aufruf), der den Fehler verursachte. So war es so einfach, wie folgt aus:

attachmentRequest.AddFile("file", attachmentPath); 

Anscheinend ist der Server einen Parameter namens „Datei“ und ist in der Lage, erfolgreich die Dateinamen aus den Metadaten der Datei zu lesen.

0

Die cUrl weist dies als eine multipart/form-Anfrage aus. finden Sie im folgenden für ein bisschen Detail

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

ich glaube die Codezeile Sie suchen zu verwenden ist

request.AlwaysMultipartFormData = true; 

Im jetzt mit einem ähnlichen Antrag Hantieren, so krank Post mit meinem Ergebnisse.

+0

Das tat eigentlich nichts, aber danke, dass du versucht hast zu helfen. – Daex