[英]RestSharp weird error on Method.Put
我正在嘗試使用RestSharp更新資源。 該API運作良好,因為是在其他應用程序中使用的,因此可以排除某些路由問題,或者排除我這方面的問題而不是API問題。
無論如何。 我當前的情況是我想更新位於host/api/resource/id
的特定資源
這是我當前在DataProvider
層中的代碼
public override bool Update(string resource, Dictionary<string, object> properties)
{
this.request = new RestRequest(resource + "/{id}", Method.PUT);
for (int i = 0; i < properties.Count; ++i)
{
KeyValuePair<string, object> kvp = properties.ElementAt(i);
if (kvp.Key != "id")
this.request.AddParameter(kvp.Key, kvp.Value, ParameterType.GetOrPost);
else
this.request.AddParameter(kvp.Key, kvp.Value, ParameterType.UrlSegment);
}
var response = this.CallApi();
// ... other stuff
}
這段代碼只是根據方法從外部接收到的字典創建請求和正確的參數,然后調用CallApi()
方法
private IRestResponse CallApi()
{
var client = new RestClient(BaseUrl);
var response = client.Execute(this.request);
if(response.ErrorException != null)
{
// Response has some error!
// ... other stuff
}
if(response.StatusCode != System.Net.HttpStatusCode.OK)
{
// Response received something different from HTTP status code OK
// ... other stuff
}
return response;
}
CallApi非常適合其他所有調用,例如GET,POST,DELETE甚至PATCH,但是當我嘗試將其與Update結合使用,從而使用PUT時,從client.Execute(this.request)
接收到的響應是405 Method Not Allowed。
經過一點調試后,我發現ResponseUri
只有一個ResponseUri
字符串,其中包含host
字符串而不是host/api/resource/id
這似乎是由
this.request = new RestRequest(resource + "/{id}", Method.PUT);
實際上,如果我刪除/{id}
部分,RequestUri具有正確的host/api/resource
,當然沒有id,反正這是錯誤的,因為我需要id:-/
有人知道為什么會這樣嗎?
問題出在新實例上的反斜杠上。 只需從/{id}
刪除反斜杠就可以了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.