Ho problemi con RestSharp per un'API REST che devo utilizzare per un progetto su cui sto lavorando. La richiesta che devo emettere è suddivisa in tre parti: una chiave API di intestazione, un file da caricare e una serie di dati in formato JSON. L'API richiede che la parte dati venga inviata utilizzando un nome campo modulo di "dati". Per qualche motivo questo sta causando problemi poiché sta denominando il campo "dati" all'interno del corpo della richiesta.Invio di POST HTTP Campo multipart/form-data utilizzando RestSharp
Il codice ho come è il seguente:
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);
Come potete vedere ho tentato di utilizzare sia il metodo e il metodo request.AddBody(doc)
request.AddParameter(name, object, type)
. Nessuno dei due sembra inviare i dati correttamente perché ricevo una risposta dal server che dice che mancano i parametri richiesti. Usando il fiddler posso vedere i dati binari, ma mai i dati JSON con entrambi questi metodi. Ho consultato la documentazione di RestSharp, ma non riesco a trovare nulla che mi permetta di specificare un nome "campo" come "dati" per il corpo dei dati del modulo, che è ciò che credo stia causando il problema che sto avendo . Cosa sto facendo di sbagliato qui?
MODIFICA: dopo un'ulteriore ispezione con il violinista, sembra che non aggiunga i miei dati JSON al corpo della richiesta HTTP. Tuttavia, con un punto di interruzione subito prima del caricamento (comando di esecuzione) posso vedere tutto serializzato correttamente all'interno dell'elenco dei parametri (e dell'elenco dei file). Durante l'ispezione di Fiddler, vedo i dati binari del file e quindi un limite multipart/form-data, quindi nulla. Immagino che questo sia il posto in cui dovrebbero essere i miei dati ...
Ho modificato il titolo. Per favore vedi, "[Le domande dovrebbero includere" tag "nei loro titoli?] (Http://meta.stackexchange.com/questions/19190/)", dove il consenso è "no, non dovrebbero". –
Scusa, per quello! Basta leggere quell'articolo, grazie per la modifica. – JNYRanger
Sono anche alla ricerca della sua risposta. @JNYRanger hai trovato la risposta ancora ..? per favore fatemi sapere se avete una soluzione. Grazie in anticipo. –