[英]How to set the Content-Type header for a RestRequest?
我在RESTful Web服務器(java)中有一個Web服務,該服務器使用MULTIPART_FORM_DATA類型的媒體並產生APPLICATION_JSON 。 我正在使用REST客戶端(C#),並使用此Web服務。 我正在使用RestSharp作為REST客戶端。 我的代碼如下:
RestRequest request = new RestRequest("addDelivery", Method.POST);
request.AddParameter("sessionId", this.sessionId);
request.AddParameter("deliveryTo", DeliveryTo);
request.AddParameter("deliveryName", DeliveryName);
if (fileList.Count() > 0) // If fileList is not empty
{
// Adds all the files to request
foreach (MyFile myFile in fileList)
{
request.AddFile(myFile.fileName, myFile.filePath);
}
}
只要我提供文件,它就可以正常工作。 如果未提供文件( fileList
為空),我將獲得HTTP狀態415-不支持的媒體類型 。 我認為由於我不提供任何文件,因此Content-Type
會自動更改為multipart/form-data
以外的其他類型。 但是Web服務消耗了MULTIPART_FORM_DATA ,也許這就是為什么出現此錯誤的原因。 我嘗試添加以下代碼段,但得到相同的錯誤:
request.AddHeader("Content-Type", "multipart/form-data");
請注意,此操作(不帶文件的發送請求)可以從其他客戶端(java,ios)成功執行
我想你想要這個 :
request.AlwaysMultipartFormData = true
由於RestSharp在您不添加任何文件時都假定使用Content-Type application / x-www.form-urlencode,因此您需要自己應用該文件。 這應該可以解決您的問題。
RestRequest request = new RestRequest("addDelivery", Method.POST);
request.AddParameter("sessionId", this.sessionId);
request.AddParameter("deliveryTo", DeliveryTo);
request.AddParameter("deliveryName", DeliveryName);
if (fileList.Count() > 0) // If fileList is not empty
{
// Adds all the files to request
foreach (MyFile myFile in fileList)
{
request.AddFile(myFile.fileName, myFile.filePath);
}
}
else // fileList.Count() is 0 or fileList is null
{
request.AddHeader("Content-Type", "multipart/form-data");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.