问题标签 [dotnet-httpclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8529 浏览

.net - .Net 4.0 HttpClient 用法?

我在 .Net 4.0 中并尝试使用 HttpClient。我读了一些文章说它在 4.0 中不再支持但您仍然可以使用它?我已经包含了System.Net.Http;程序集,但它不允许我向HttpClient. 知道如何解决这个问题吗?

我在错误发生的地方加粗了。

0 投票
1 回答
1707 浏览

c# - 使用 HttpClient,我怎样才能干净地读取和反序列化 RSS 提要?

我正在使用NuGet 上可用的 HttpClient

这是我开始的代码:

问题:

  1. 我必须使用 DataContract/DataMember 属性显式定义RSS.Feed和装饰它。看起来确实应该内置一个 RSS 类。是吗?(也许我只是不知道)

  2. 这会失败,并出现一个抱怨 RSS 提要中的处理指令的异常。它实际上是一个样式表,我不在乎。我只想要数据。

例外是:

异常:System.AggregateException:发生一个或多个错误。---> System.InvalidOperationException: XML 文档 (1, 2) 中存在错误。---> System.Xml.XmlException:不支持处理指令(XML 声明除外)和 DTD。第 1 行,位置 2。

提要如下所示:

关于更好的方法的任何提示?使用 HttpClient!!

我发现文档有点薄。

0 投票
1 回答
5588 浏览

c# - C# Metro HttpClient 未在 PostAsync 上接收 cookie

我正在尝试使用 .NET 4.5 HttpClient 登录网站并接收 cookie。我在离开之前就中断了尝试并检查 CookieContainer 并且它不包含任何 cookie。不过,响应会发回 200 状态。

我不知道为什么这不起作用。当我尝试 .NET 4 风格时,它工作正常。

0 投票
2 回答
3685 浏览

http - text/html vs application/x-www-form-urlencoded 和 FormUrlEncodedMediaTypeFormatter

对于 POST 请求,我收到了text/html格式的响应,响应正文包含以下信息:

oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXX&oauth_token_secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback_confirmed=true

我提出了这个请求System.Net.Http.HttpClient,我可以用FormUrlEncodedMediaTypeFormatteras读取响应,FormDataCollection但结果证明默认情况下FormUrlEncodedMediaTypeFormatter只支持application/x-www-form-urlencoded格式。因此,我使用以下代码解决了这个问题:

这里的问题是:

响应提供者(在这种情况下是 Twitter)是否通过将此响应作为text/html发送而做错了,还是应该默认FormUrlEncodedMediaTypeFormatter支持text/html类型?

0 投票
2 回答
48494 浏览

c# - WebApi 中响应的 DelegatingHandler

我目前正在使用几个委托处理程序(派生自 的类DelegatingHandler)在请求发送之前对其进行处理,例如验证签名等。这一切都非常好,因为我不必在所有调用上重复签名验证(例如)。

我想对来自同一个 Web 请求的响应使用相同的原则。响应中是否有类似于 DelegatingHandler 的东西?一种在响应返回到方法之前捕获响应的方法,在某种程度上?

附加信息:我正在使用HttpClient.PutAsync(...)

0 投票
3 回答
191847 浏览

c# - 将 Http 标头添加到 HttpClient

在向 Web 服务发送请求之前,我需要将 http 标头添加到 HttpClient。我如何为单个请求执行此操作(而不是在 HttpClient 上对所有将来的请求)?我不确定这是否可能。

0 投票
3 回答
5108 浏览

c# - 查看将在 HttpResponseMessage / HttpRequestMessage (System.Net.Http, WebAPI) 中发送/接收的原始标头

直观地查看将在 WebAPI 的 HttpResponseMessage / HttpRequestMessage 类型中实际发送或接收的 Http 标头的原始列表可能非常有益。我的意思只是一个普通的旧字符串,每个标题都在一个新行上,正是生成或接收的内容。

但不幸的是,看起来这些类型中的任何一种都不允许您查看实际生成的内容。取而代之的是,到处都是属性。一些在原始 HttpResponseMessage / HttpRequestMessage 类型本身中,一些在 response/request.Content.Headers 中(两者不重复,后者用于尚未作为属性涵盖的那些,通常用于自定义标头),......也许还有 Cookie某处获得了自己的标题。并且在视觉上看到这些 Header 集合列表也是一种痛苦,即你最终会为每个这样的集合提供一堆迭代代码......更混乱。

但是在实际发送/接收的响应/请求中,并没有这样的划分,简单的看到所有的Http headers。所以我在某个地方想念它吗?在这些地方实际上是否有一个简单直观的属性可以简单地返回原始标题字符串?当然,响应已经收到了标头并刚刚解析了它们……那个原始字符串隐藏在某个地方吗?

(顺便说一句,我知道 Fiddler ......这完全不能令人满意。如果我必须处理 Http 标头的低级混乱,那么能够使用我正在使用的编程类型查看它们是很有意义的生成并接收它们。但更糟糕的是,我仍然无法让 localhost 与 Fiddler 一起工作(在 Win8 上),这使得它在许多调试场景中的使用无效,在这些场景中我只想看到将生成的臭头。 )

0 投票
3 回答
9345 浏览

c# - HttpClient 不报告从 Web API 返回的异常

HttpClient用来调用我的 MVC 4 web api。在我的 Web API 调用中,它返回一个域对象。如果出现任何问题,HttpResponseException将在服务器上抛出一个自定义消息。

我可以使用 IE F12 在响应正文中看到自定义的错误消息。但是,当我使用 调用它时HttpClient,我没有收到自定义的错误消息,只有 http 代码。对于 404,“ReasonPhrase”始终是“未找到”,对于 500 代码,始终是“内部服务器错误”。

有任何想法吗?如何从 Web API 发回自定义错误消息,同时保持正常返回类型作为我的域对象?

0 投票
2 回答
2207 浏览

unit-testing - 测试具有授权过滤器的 WebAPI 操作

我有一个添加了 [Authorize] 属性的 Web API,这意味着我之前的单元测试现在由于未经授权而失败。这是一个基本测试的示例以及一个初始化方法:

我想知道是否有任何方法可以让我的测试登录以便它通过授权过滤器,或者是否有任何方法可以作为 ASPXAUTH cookie 与 HttpClient 请求一起传递?还是我没有想到的另一种通过授权的方式?

我尝试过的任何方法似乎都不起作用,而且我很难在任何地方找到任何有用的信息。

提前致谢。

0 投票
1 回答
2237 浏览

asp.net-web-api - HttpClient 读取自定义 HttpContent 类型

在服务器上,我使用自定义消息处理程序强制压缩。处理程序检查Accept-Encoding标头,如果它受支持(例如 GZip),将HttpResponseMessage.ContentCompressedContent. 这只是像这样压缩原始内容:

在客户端,我们可以通过检查Content-Encodingheader并使用另一种HttpContent类型进行解压来实现解压:

我不确定的部分是我们是否应该使用自定义HttpContent类型来进行解压缩。在服务器上这样做是有意义的,因为我们真的没有其他方式来接触响应流。然而,在客户端上,这可以通过StreamContent直接解压缩标准甚至使用自定义HttpClient实现来完成。