我目前正在开发一个使用 REST API 的 Windows Phone 8 应用程序,并且我正在使用众所周知的库“RESTSharp”来请求 API 服务。
我的问题是 REST API 公开了一种需要使用HTTP LINK 动词的方法,而我无法找到任何与将此动词与 RESTSharp 一起使用的相关内容(使用如此通用的术语“链接”更是如此)。
因此,如果有人可以给我一些建议或只是为我指明正确的方向,那您将非常好。
随时询问更多细节。
我目前正在开发一个使用 REST API 的 Windows Phone 8 应用程序,并且我正在使用众所周知的库“RESTSharp”来请求 API 服务。
我的问题是 REST API 公开了一种需要使用HTTP LINK 动词的方法,而我无法找到任何与将此动词与 RESTSharp 一起使用的相关内容(使用如此通用的术语“链接”更是如此)。
因此,如果有人可以给我一些建议或只是为我指明正确的方向,那您将非常好。
随时询问更多细节。
最初,我认为使用 RestSharp 没有办法做到这一点,因为IRestRequest
接口使用Method
枚举来表示 HTTP 方法。但是,RestSharp 似乎确实支持通过类上的ExecuteAsGet<T>
andExecuteAsPost<T>
方法使用非标准 HTTP 动词RestClient
。您使用哪种方法取决于非标准 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);
更新
看来您是对的,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");
不久前添加了对非标准方法的支持。你可以做:
restClient.ExecuteAsPost(restRequest, "LINK")
或使用ExecuteAsGet
. 基本上,您根据是传递查询字符串还是请求正文来使用其中一种。
我个人觉得这是一个糟糕的 API。新HttpClient
的对非标准方法有更好的 API。