Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebClient restful删除_C#_Httpwebrequest_Webclient - Fatal编程技术网

C# WebClient restful删除

C# WebClient restful删除,c#,httpwebrequest,webclient,C#,Httpwebrequest,Webclient,我有一个简单的Restful服务正在从控制台应用程序调用,所以我使用WebClient。我想知道这个要求删除的电话是否正确 url看起来像localhost/RestService1/Person/1 using (var client = new WebClient()) { client.UploadString(url, "DELETE", ""); } 我不喜欢UploadString没有数据参数就没有重载。传递空参数对我来说不太合适。

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

url看起来像
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();

两个模块都很好,但什么是最好的?或者有更好的方法吗?

WebClient类不太适合restful api的使用,我使用过类似于过去的第三方库,它们更适合这种类型的web请求。我很确定RestSharp只是暗中使用了HttpWebRequest,但它提供了大量语义,使使用和重用rest资源变得更容易。

去获取Microsoft.Net.Http客户端库吧


HttpClient是一个更好的用于使用API的客户端。

以下内容适合我:

client.UploadValues(url, "DELETE", new NameValueCollection()); 

对不起,这是我在vb.net中的解决方案,我相信任何人都可以翻译成c#

删除标题是非常重要的,我必须对标题中的Accept和Content类型进行注释,并且工作良好。。。。。我当然寄了代币

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

另请参见:另请参见:除了这些引用中与DELETE和RESTful的关系之外,我认为
WebClient
并没有真正给出DELETE的语义
Webclient
只是在封面下使用
WebRequest
HttpWebRequest
),因此我认为直接使用
HttpWebRequest
)更具可读性。我不认为前两个链接涉及我的问题。我的url是localhost/RestService1/Person/1,其中/1是个人Id,因此它是restful的。我做了更多的挖掘,发现WebClient主要是一个包装器。感谢我将WebClient与Newtonsoft Json结合使用,使用起来非常简单。我会调查的。感谢Visual Studio 2010不支持此软件包,仅当使用使用此软件包的库时,针对.NET Framework 4.5或.NET for Windows应用商店应用的项目才需要此软件包。@juFo VS2010和.NET 4.0支持此软件包。我不知道你为什么会有不同的想法。我只是引用了你提供的链接:@jufoaaah。不幸的是,自从我发布后,该链接的内容发生了变化!这是HttpClient的预发布“便携库”版本。如果您选择稳定的版本,您将获得一个与.net 4/VS2010兼容的版本。HttpClient的使用非常笨拙,因为它只包含异步方法(这并不总是可取的)。此外,MS docs表示,HttpClient不是WebClient的替代品。如果您需要提供其他参数(例如api_键),您可以通过url.client.UploadString(url,“DELETE”,string.Empty)中的查询字符串提供这些参数