相关疑难解决方法(0)

是否必须处理HttpClient和HttpClientHandler?

.NET Framework 4.5中的System.Net.Http.HttpClientSystem.Net.Http.HttpClientHandler实现了IDisposable(通过System.Net.Http.HttpMessageInvoker).

using声明文件说:

通常,当您使用IDisposable对象时,您应该在using语句中声明并实例化它.

这个答案使用了这种模式:

var baseAddress = new Uri("http://example.com");
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
    var content = new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string, string>("foo", "bar"),
        new KeyValuePair<string, string>("baz", "bazinga"),
    });
    cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value"));
    var result = client.PostAsync("/test", content).Result;
    result.EnsureSuccessStatusCode();
}
Run Code Online (Sandbox Code Playgroud)

但是微软最明显的例子并没有Dispose()明确地或隐含地调用.例如:

c# idisposable using .net-4.5 dotnet-httpclient

315
推荐指数
7
解决办法
12万
查看次数

自定义标头到Httpclient请求

如何为HttpClient请求添加自定义标头?我正在使用PostAsJsonAsync方法发布JSON.我需要添加的自定义标题是

"X-Version: 1"
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的:

using (var client = new HttpClient()) {
    client.BaseAddress = new Uri("https://api.clickatell.com/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xxxxxxxxxxxxxxxxxxxx");
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = client.PostAsJsonAsync("rest/message", svm).Result;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net http-headers dotnet-httpclient

116
推荐指数
4
解决办法
15万
查看次数

使用.NET 4.5和C#中的HttpClient进行HTTP HEAD请求

是否可以使用HttpClient.NET 4.5中的新创建HTTP HEAD请求?唯一的方法我能看到的是GetAsync,DeleteAsync,PutAsyncPostAsync.我知道HttpWebRequest-class能够做到这一点,但我想使用现代HttpClient.

.net c# httprequest .net-4.5

48
推荐指数
3
解决办法
2万
查看次数

如何使用HttpClient将带有JSON的DELETE发送到REST API

我必须使用HttpClient类向具有JSON内容的REST API服务发送删除命令,并且无法使其正常工作.

API调用:

DELETE /xxx/current
{
 "authentication_token": ""
}
Run Code Online (Sandbox Code Playgroud)

因为我无法在下面的语句中添加任何内容:

HttpResponseMessage response = client.DeleteAsync(requestUri).Result;
Run Code Online (Sandbox Code Playgroud)

我知道如何使用RestSharp来完成这项工作:

var request = new RestRequest {
    Resource = "/xxx/current",
    Method = Method.DELETE,
    RequestFormat = DataFormat.Json
};

var jsonPayload = JsonConvert.SerializeObject(cancelDto, Formatting.Indented);

request.Parameters.Clear();
request.AddHeader("Content-type", "application/json");
request.AddHeader ("Accept", "application/json");
request.AddParameter ("application/json", jsonPayload, ParameterType.RequestBody);

var response = await client.ExecuteTaskAsync (request);
Run Code Online (Sandbox Code Playgroud)

但我没有RestSharp就完成了.

c# httpclient portable-class-library

30
推荐指数
3
解决办法
3万
查看次数

如何将此.NET RestSharp代码转换为Microsoft.Net.Http HttpClient代码?

我试图找出如何使用HttpClientPOST一些简单的参数.

  • 电子邮件
  • 密码

我一直在用RestSharp做这个,但我正试图迁移它.

我怎么能这样做HttpClient呢?

我有以下RestSharp代码

var restRequest = new RestRequest("account/authenticate", Method.POST);
restRequest.AddParameter("Email", email);
restRequest.AddParameter("Password", password);
Run Code Online (Sandbox Code Playgroud)

我怎样才能将其转换为使用(Microsoft.Net.Http) HttpClient该类?

请注意:我正在进行POST

此外,这是PCL组件.

最后,我可以添加自定义标头.说:"ILikeTurtles", "true".

.net c# restsharp dotnet-httpclient

8
推荐指数
1
解决办法
4595
查看次数