Ich habe Probleme mit RestSharp für eine REST-API, die ich für ein Projekt, an dem ich arbeite, verwenden muss. Die Anforderung, die ich ausgeben muss, besteht aus drei Teilen: Einem Header-API-Schlüssel, einer Datei zum Hochladen und einer Reihe von Daten im JSON-Format. Die API erfordert, dass der Datenteil unter Verwendung eines Formularfeldnamens "Daten" gesendet wird. Aus irgendeinem Grund verursacht dies Probleme, da es das Feld "Daten" innerhalb des Körpers der Anfrage nennt.Senden von HTTP POST Multipart/Formulardatenfeld mit RestSharp
Der Code, den ich als habe sich wie folgt:
var request = new RestRequest(UPLOAD_DOC_URLSEGMENT, Method.POST)
{
RequestFormat = DataFormat.Json,
AlwaysMultipartFormData = true,
JsonSerializer = new RestSharpJsonDotNetSerializer(customSerializer)
};
if (doc is DocA)
request.AddParameter("data",doc as DocA,ParameterType.RequestBody);
//request.AddBody(doc as DocA);
else
request.AddParameter("data", doc as DocB,ParameterType.RequestBody);
//request.AddBody(doc as DocB);
request.AddFile("file", doc.File.FullName);
Wie man sehen kann ich versucht habe sowohl die request.AddBody(doc)
-Methode und die request.AddParameter(name, object, type)
Methode zu verwenden. Keiner von ihnen scheint die Daten korrekt zu senden, da ich eine Antwort vom Server erhalte, die besagt, dass die erforderlichen Parameter fehlen. Mit Fiddler kann ich die Binärdaten sehen, aber nie die JSON-Daten mit diesen beiden Methoden. Ich habe die RestSharp-Dokumentation durchgesehen, aber ich kann nichts finden, was es mir erlaubt, einen bestimmten "Feldnamen" als "Daten" für den Formulardatenkörper anzugeben, was meiner Meinung nach das Problem verursacht, das ich habe . Was mache ich hier falsch?
BEARBEITEN: Bei weiterer Überprüfung mit Fiddler scheint es, dass es meine JSON-Daten überhaupt nicht zum Hauptteil der HTTP-Anfrage hinzufügt. Mit einem Breakpoint direkt vor dem Upload (Befehl execute) kann ich jedoch alles in der Parameterliste (und Dateiliste) richtig serialisiert sehen. Bei der Überprüfung der mit Fiddler sehe ich die Datei binäre Daten, und dann eine Multipart/Form-Daten-Grenze, und dann nichts. Ich würde annehmen, das ist, wo meine Daten sein sollen ...
Ich habe Ihren Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –
Entschuldigung, das ist es! Lies einfach diesen Artikel, danke für die Bearbeitung. – JNYRanger
Ich bin auch auf der Suche nach seiner Antwort. @JNYRanger hast du die Antwort schon gefunden ..? Bitte lassen Sie mich wissen, wenn Sie eine Lösung haben. Danke im Voraus. –