33

我有一个从控制台应用程序调用的简单 Restful 服务,所以我正在使用WebClient. 我想知道这个删除的调用是否正确。

网址看起来像localhost/RestService1/Person/1

using (var client = new WebClient()) 
{
    client.UploadString(url, "DELETE", "");
}

我不喜欢UploadString没有data参数就没有重载。传递一个空参数并不适合我。有没有更好的方法用于 a DELETE

我可以使用WebRequest,但我只想使用WebClient以保持一致。

这是WebRequest

var request = WebRequest.Create(url);
request.Method = "DELETE";
var response = (HttpWebResponse)request.GetResponse();

两个块都工作正常,但什么是最好的?或者,还有更好的方法?

4

4 回答 4

29

以下对我有用:

client.UploadValues(url, "DELETE", new NameValueCollection()); 
于 2016-07-22T13:34:30.457 回答
3

WebClient 类并不能很好地用于restful api 消费,我过去使用过像RestSharp这样的第三方库,它们更适合这种类型的web 请求。我很确定 RestSharp 只是在幕后使用了 HttpWebRequest,但它提供了许多语义,使得使用和重用剩余资源更容易。

于 2012-09-11T21:13:17.970 回答
3

去获取 Microsoft.Net.Http 客户端库http://nuget.org/packages/Microsoft.Net.Http

HttpClient 是用于处理 API 的更好的客户端。

于 2012-09-11T21:22:14.477 回答
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()))
于 2020-07-22T04:30:00.943 回答