我遇到了使用RestSharp進行REST API的問題,我需要爲我正在處理的項目使用Rest API。我需要發出的請求分爲三部分:頭部API密鑰,要上傳的文件以及一堆JSON格式的數據。 API要求使用「數據」的表單字段名稱發送數據部分。出於某種原因,這是由於它在請求正文中命名字段「數據」而引起的問題。使用RestSharp發送HTTP POST多部分/表單數據字段
我的代碼如下:
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);
正如你可以看到我已經嘗試同時使用request.AddBody(doc)
方法和request.AddParameter(name, object, type)
方法。它們都沒有正確發送數據,因爲我收到服務器的迴應,說需要的參數丟失。使用fiddler我可以看到二進制數據,但從來沒有使用這兩種方法的JSON數據。我已經閱讀了RestSharp文檔,但我找不到任何允許爲表單數據主體指定特定「字段」名稱作爲「數據」的任何內容,這是我認爲會導致我遇到的問題。我在這裏做錯了什麼?
編輯:進一步檢查與提琴手它似乎並沒有添加我的JSON數據的HTTP請求的主體。但是,在上傳(執行命令)之前有一個斷點,我可以看到在參數列表(和文件列表)中正確序列化的所有內容。在檢查Fiddler時,我會看到文件二進制數據,然後是多部分/表單數據邊界,然後什麼也看不到。我會認爲這是我的數據應該是...
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
對不起,回合!請閱讀該文章,感謝編輯。 – JNYRanger
我也在尋找它的答案。 @JNYRanger你找到了答案嗎?請讓我知道你是否有解決方案。提前致謝。 –