Tag: dotnet httpclient

如何知道HttpClient何时超时?

据我所知,没有办法知道这是特别发生的超时。 我不是在正确的地方寻找,还是我错过了更大的东西? string baseAddress = "http://localhost:8080/"; var client = new HttpClient() { BaseAddress = new Uri(baseAddress), Timeout = TimeSpan.FromMilliseconds(1) }; try { var s = client.GetAsync("").Result; } catch(Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.InnerException.Message); } 这返回: 发生一个或多个错误。 任务被取消了。

.NET HttpClient。 如何POSTstring值?

我如何创build使用C#和HttpClient下面的POST请求: 我需要这样一个请求我的WEB API服务: [ActionName("exist")] [System.Web.Mvc.HttpPost] public bool CheckIfUserExist([FromBody] string login) { bool result = _membershipProvider.CheckIfExist(login); return result; }

来自.Net 4.5的asynchronousHttpClient是密集加载应用程序的不好select吗?

我最近创build了一个简单的应用程序来testingHTTP调用吞吐量,这个吞吐量可以用一种经典的multithreading方法以asynchronous方式生成。 该应用程序能够执行预定义数量的HTTP调用,并在最后显示执行它们所需的总时间。 在我的testing中,所有的HTTP调用都是由我的本地IIS服务器进行的,他们检索到一个小文本文件(12字节大小)。 下面列出了asynchronous实现代码中最重要的部分: public async void TestAsync() { this.TestInit(); HttpClient httpClient = new HttpClient(); for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { ProcessUrlAsync(httpClient); } } private async void ProcessUrlAsync(HttpClient httpClient) { HttpResponseMessage httpResponse = null; try { Task<HttpResponseMessage> getTask = httpClient.GetAsync(URL); httpResponse = await getTask; Interlocked.Increment(ref _successfulCalls); } catch (Exception ex) { […]

ASP.NET WebApi:如何使用WebApi HttpClient执行file upload的多部分文章

我有一个WebApi服务处理从一个简单的forms,如这样的上传: <form action="/api/workitems" enctype="multipart/form-data" method="post"> <input type="hidden" name="type" value="ExtractText" /> <input type="file" name="FileForUpload" /> <input type="submit" value="Run test" /> </form> 但是,我不知道如何使用HttpClient API模拟相同的职位。 FormUrlEncodedContent位很简单,但是如何将文件内容的名称添加到文章中?

HttpClient是否可以安全使用?

在所有的例子中,我可以findHttpClient的用法,它用于一个closures的呼叫。 但是,如果我有一个持续的客户情况,可以同时提出几个请求呢? 基本上,一次调用2个线程的client.PostAsync对于HttpClient的同一个实例是安全的。 我并不是真的在这里寻找实验结果。 作为一个工作的例子可能只是一个侥幸(而且是一个持久的例子),一个失败的例子可能是一个configuration错误的问题。 理想情况下,我正在寻找HttpClient中并发处理问题的权威答案。

为什么HttpClient BaseAddress不起作用?

考虑以下代码,其中BaseAddress定义了部分URIpath。 using (var handler = new HttpClientHandler()) using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri("http://something.com/api"); var response = await client.GetAsync("/resource/7"); } 我期望这执行一个GET请求http://something.com/api/resource/7 。 但事实并非如此。 经过一番search,我发现这个问题和答案: 与BaseAddress HttpClient 。 build议放置在BaseAddress的末尾。 using (var handler = new HttpClientHandler()) using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri("http://something.com/api/"); var response = await client.GetAsync("/resource/7"); } […]

错误原因CS0161:不是所有的代码path都返回一个值

我做了一个基本的扩展方法来添加重试function到我的HttpClient.PostAsync : public static async Task<HttpResponseMessage> PostWithRetryAsync(this HttpClient httpClient, Uri uri, HttpContent content, int maxAttempts, Action<int> logRetry) { if (maxAttempts < 1) throw new ArgumentOutOfRangeException(nameof(maxAttempts), "Max number of attempts cannot be less than 1."); var attempt = 1; while (attempt <= maxAttempts) { if (attempt > 1) logRetry(attempt); try { var response = await httpClient.PostAsync(uri, […]

决定HttpClient和WebClient

我们的networking应用程序运行在.Net Framework 4.0中。 UI通过ajax调用来调用控制器方法。 我们需要从我们的供应商处使用REST服务。 我正在评估在.NET 4.0中调用REST服务的最佳方式。 REST服务需要基本身份validationscheme,它可以以XML和JSON格式返回数据。 不需要上传/下载庞大的数据,以后我什么都看不到。 我看了一些关于REST消耗的开放源代码项目,并没有在这些项目中find任何价值来说明额外的依赖关系。 开始评估WebClient和HttpClient 。 我从NuGet下载了.Net 4.0的HttpClient。 我searchWebClient和HttpClient之间的差异, 这个网站提到,单个HttpClient可以处理并发调用,它可以重用parsing的DNS,cookieconfiguration和身份validation。 我还没有看到由于差异而可能获得的实际价值。 我做了一个快速的性能testing,以查找WebClient (同步调用), HttpClient (同步和asynchronous)如何执行。 这里是结果: 对所有请求使用相同的HttpClient实例(min – max) WebClient同步:8毫秒 – 167毫秒 HttpClient同步:3毫秒 – 7228毫秒 HttpClientasynchronous:985 – 10405毫秒 对每个请求使用新的HttpClient (min – max) WebClient同步:4毫秒 – 297毫秒 HttpClient同步:3毫秒 – 7953毫秒 HttpClient async:1027 – 10834 ms 码 public class AHNData { public […]

C#HttpClient 4.5 multipart / form-data上传

有谁知道如何使用.Net 4.5中的HttpClient与multipart/form-data上传? 我在互联网上找不到任何例子。

在WebAPI客户端中每次调用创build一个新的HttpClient的开销是多less?

什么应该是WebAPI客户端的HttpClient生存期? 有一个HttpClient实例多个呼叫是更好吗? 什么是创build和处置HttpClient每个请求的开销,如下面的例子(取自http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from -a-net-client ): using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:9000/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // New code: HttpResponseMessage response = await client.GetAsync("api/products/1"); if (response.IsSuccessStatusCode) { Product product = await response.Content.ReadAsAsync>Product>(); Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category); } }