WebClient restful删除

时间:2012-09-11 19:56:24

标签: c# httpwebrequest webclient

我从控制台应用程序调用了一个简单的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();

这两个块都运行正常,但最好的是什么?或者有更好的方法吗?

4 个答案:

答案 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()))