我目前正在开发一个使用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