我目前正在開發一個使用REST API的Windows Phone 8應用程序,並使用衆所周知的庫「RESTSharp」來請求API服務。如何使用HTTP LINK動詞與RESTSharp請求API?
我的問題是REST API暴露了需要使用HTTP LINK verb的方法,我無法找到任何與RESTSharp使用此謂詞相關的任何內容(甚至更多地使用如此通用的術語「鏈接」)。
所以,如果有人可以給我一些建議,或只是指出我在正確的方向,那將是非常友善的你。
隨時要求進一步的細節。
我目前正在開發一個使用REST API的Windows Phone 8應用程序,並使用衆所周知的庫「RESTSharp」來請求API服務。如何使用HTTP LINK動詞與RESTSharp請求API?
我的問題是REST API暴露了需要使用HTTP LINK verb的方法,我無法找到任何與RESTSharp使用此謂詞相關的任何內容(甚至更多地使用如此通用的術語「鏈接」)。
所以,如果有人可以給我一些建議,或只是指出我在正確的方向,那將是非常友善的你。
隨時要求進一步的細節。
最初,我以爲沒有辦法使用RestSharp來做到這一點,因爲IRestRequest
接口使用Method
枚舉來表示HTTP方法。但是,似乎RestSharp確實支持通過RestClient
類中的ExecuteAsGet<T>
和ExecuteAsPost<T>
方法使用非標準HTTP動詞。您使用哪種方法取決於非標準HTTP方法的語義。如果請求有一個正文(或HTTP實現中的「實體」),那麼你可以使用ExecuteAsPost
;如果沒有,那麼你會使用ExecuteAsGet
。
以下是一些演示如何使用RestSharp執行LINK請求的示例代碼,它基於您的問題中引用的草稿備忘錄中的示例之一。
RestClient client = new RestClient("http://example.org");
RestRequest request = new RestRequest("/images/my_dog.jpg");
request.AddHeader("Link", "<http://example.org/profiles/joe>; rel=\"tag\"");
IRestResponse response = client.ExecuteAsGet(request, "LINK");
Debug.WriteLine((int)response.StatusCode + " " + response.StatusDescription);
UPDATE
看來你是對的,WP8項目不包括RestClient.Sync.cs
,它包含了同步ExecuteAsGet<T>
和ExecuteAsPost<T>
方法。然而,異步版本ExecuteAsyncGet<T>
和ExecuteAsyncPost<T>
應該在WP8中提供給您。這兩個參數都接受字符串httpMethod
。
client.ExecuteAsyncGet(request, (response, handle) =>
{
Debug.WriteLine((int)response.StatusCode + " " + response.StatusDescription);
},
"LINK");
現在,對於WP8應用程序,RestSharp API不支持ExecuteAsGet()。 有一個似乎存在於RestClient類中的HttpFactory。沒有可讀的文件,但我會研究它。 – Invvard
在WP8中應該可以使用這些方法的異步版本。我已經更新了我的答案。 –
感謝您提供這些細節,「ExecuteAsyncGet」是執行「LINK」請求的贏家! – Invvard