我目前正在开发 Windows Phone 8 应用程序,使用 REST API,并且我正在使用众所周知的库“RESTSharp”来请求 API 服务。
我的问题是 REST API 公开了一个需要使用 HTTP LINK verb 的方法并且我找不到任何与将此动词与 RESTSharp 一起使用相关的内容(甚至更多的是使用如此通用的术语“链接”)。
因此,如果有人可以给我一些建议或者只是为我指出正确的方向,那将非常感谢。
请随时询问更多详情。
最佳答案
最初,我认为没有办法使用 RestSharp 来做到这一点,因为 IRestRequest
接口(interface)使用 Method
枚举来表示 HTTP 方法。然而,RestSharp 似乎确实支持通过 ExecuteAsGet<T>
使用非标准 HTTP 动词。和 ExecuteAsPost<T>
RestClient
上的方法类(class)。使用哪种方法取决于非标准 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");
关于c# - 如何使用带有 RESTSharp 的 HTTP LINK 动词请求 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755385/