我从控制台应用程序调用了一个简单的Restful服务,所以我正在使用WebClient。我想知道这次删除是否正确。
网址看起来像 localhost / RestService1 / Person / 1
using (var client = new WebClient())
{
client.UploadString(url, "DELETE", "");
}
我不喜欢没有数据参数的UploadString没有重载。传递一个空参数并不适合我。有没有更好的方法用于“删除”?
我可以使用WebRequest,但我想使用WebClient来保持一致。
这是WebRequest块
var request = WebRequest.Create(url);
request.Method = "DELETE";
var response = (HttpWebResponse)request.GetResponse();
这两个块都运行正常,但最好的是什么?或者有更好的方法吗?
答案 0 :(得分:16)
以下适用于我:
client.UploadValues(url, "DELETE", new NameValueCollection());
答案 1 :(得分:3)
WebClient类并没有真正适用于安静的api消费,我过去曾使用像RestSharp这样的第三方库,它们更倾向于这种类型的Web请求。我非常确定RestSharp只是使用了HttpWebRequest,但它提供了许多语义,使得更容易使用和重用其余资源。
答案 2 :(得分:3)
去获取Microsoft.Net.Http客户端库http://nuget.org/packages/Microsoft.Net.Http
HttpClient是一个更好的客户端,用于处理API。
答案 3 :(得分:0)
对不起,这是我在vb.net中的解决方案,我确定任何人都可以翻译成c#
删除标头非常重要,我必须评论有关Accept和Content-Type的标头,然后才能正常工作.....当然我确实发送了令牌
Dim rest As WebClient = New WebClient()
rest.Headers.Add(HttpRequestHeader.Authorization, "Bearer " & Token)
'rest.Headers.Add(HttpRequestHeader.Accept, "application/json")
'rest.Headers.Add(HttpRequestHeader.ContentType, "application/json")
result = System.Text.Encoding.UTF8.GetString(rest.UploadValues(host_api & uri, "DELETE", New NameValueCollection()))