问题标签 [flurl]

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 投票
5 回答
10119 浏览

c# - 如何更改 FLURL 客户端的 HTTP 请求内容类型?

我正在使用 flurl 提交 HTTP 请求,这非常有用。现在我需要将一些请求的“ Content-Type”标头更改为“application/json;odata=verbose”

您可以看到我如何尝试在上面添加标题 ( .WithHeader("Content-Type", "application/json;odata=verbose"))

不幸的是,这给了我以下错误:

“InvalidOperationException:错误的标头名称。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。”

我还尝试了 flurl 的“ConfigureHttpClient”方法,但找不到设置内容类型标头的方式/位置。

0 投票
1 回答
1375 浏览

c# - FLURL:映射属性名称

有没有办法在做时映射不匹配的属性名称ReceiveJson()?例如 JSON 中的“用户名”应映射到 C# 对象中的“用户名”。

0 投票
1 回答
391 浏览

c# - Flurl AddFile 文件名编码

我尝试使用flurl发送这样的文件:

fileName = "Файл импорта тарифов (1).xlsx"

但是在 post 方法中,我得到了这个:

Request.Files.FirstOrDefault().FileName = "=?utf-8?B?0KTQsNC50Lsg0LjQvNC/0L7RgNGC0LAg0YLQsNGA0LjRhNC+0LIgKDEpLnhsc3g=?="

有什么建议么?

0 投票
1 回答
263 浏览

.net - 如何在 Visual Studio 2017 中构建 flurl?

我正在尝试使用 Visual Studio 2017 企业版在我的机器上构建库 FLURL,该库位于 github 上: Flurl, an HTTP extension library 。我选择了所有 Xamarin 选项、所有 C# 选项,但没有选择 C++ 选项(这一点都不重要,这是一个 C# 库)。我在 NuGet 更新某些库时遇到过无数次失败,尤其是 MS 本身的库。如果有帮助,我可以稍后发布,但不想在此时混淆问题。

我需要更新库,因为我正在使用带有 T4 的 Flurl 库进行边缘条件 - 我正在使用 Flurl 调用 T4 脚本(不管为什么,这并不重要)。我这样做的问题是我的库的其余部分(本身就是一大块代码)正在使用 Newtonsoft Json v 10。Flurl 仅限于 9.x。虽然 .NET 可以处理差异并根据需要加载库,但 T4 不能。它一次只能加载一个版本,因此我在尝试加载 v10 时遇到未找到错误,或者在尝试通过单独的路径加载这两个版本时遇到缺少方法错误。T4 要求使用内部命令专门加载包,并且没有规定加载同一库的多个版本。

所以......直到有一个使用最新和最好的 MS 和 Newtonsoft 库的“官方”更新,我的想法是构建一个本地变体,将它放在我的本地 NuGet 服务器存储库中并使用它,直到官方更新到来出去。由于上述错误,只有我不能。因此,如果有人可以协助构建 flurl 库,因为他们已经拥有并且知​​道技巧是什么,我将不胜感激。我当前的环境是专门为此而构建的(一定会喜欢 VMWare),所以我有 Win 10 创建者,VS2017 以及所有最新更新。

我怎样才能得到flurl来构建?

更新:作者非常友好地通知我代码的更新,但是,在(预期的)编译过程之后,我仍然无法构建相同的代码,只需将源代码克隆到 .zip、打开 .zip、复制 flurl源代码树,在 VS2017 中打开 flurl .sln 文件并点击“重建”。所有错误都在一个文件 PackageTester.Shared.Tester.cs 中。我的 VS 苦苦抱怨没有提及“flurl”本身。而且,确实,参考列表确实表明 flurl 和 flurl.http 是“缺失的”。我想我可以通过转到 NuGet 并获取最新的 flurl 来“解决”这个问题,但是,我对经典的“鸡和蛋”问题感到震惊,因为我需要 flurl 来编译 flurl?当我坐在这里轻笑时,我 我想知道我应该如何解决最后一个小问题,以便成功构建 flurl 并继续使用这个美妙的库。为了避免任何潜在的讽刺解释,我很认真——我真的很喜欢 flurl,不得不为我的 T4 问题写一个解决方法让我很痛苦。我完成了,但我更愿意使用这个优秀的库,而不必为这些事情烦恼。所以......如果作者愿意为最后一个小怪癖提供解决方案,我会是一个快乐的人!我宁愿使用这个优秀的库,而不必为这些事情烦恼。所以......如果作者愿意为最后一个小怪癖提供解决方案,我会是一个快乐的人!我宁愿使用这个优秀的库,而不必为这些事情烦恼。所以......如果作者愿意为最后一个小怪癖提供解决方案,我会是一个快乐的人!

更新更新:检查包源并看到它设置为 api.nuget.org 而不是“全部”后,我更改了设置,恢复了包,现在一切都很好。库成功构建。很高兴知道如何在没有 flurl 的情况下构建 flurl,但现在这是次要的,因为我有一个可以完成这项工作的库构建,更重要的是,它使用我的库使用的相同版本的 Newtonsoft.Json,因此我的 T4 环境现在应该解决问题。

0 投票
1 回答
1727 浏览

c# - 使用 FlurlClient 的自定义 HttpClientHandler 不使用 ClientCertificate

我需要在我的网络请求中添加一个客户端证书并尝试以这种方式实现它: Stackoverflow

在这个答案的最后,出现了“FlurlClient 方式”。使用和配置 FlurlClient 而不是全局 FlurlHttp 配置。我试过这个,但它没有用。

我创建了一个新的.NET Core控制台应用程序来向您展示问题:

是从链接的X509HttpFactoryStackOverflow 答案中复制的(但使用HttpClientHandler代替WebRequestHandler):

所以使用全局 FlurlHttp 配置是有效的,而配置 FlurlClient 是无效的。为什么?

0 投票
1 回答
806 浏览

c# - 如何使用 Flurl 测试在内存中运行的 ASP.NET Web API?

我试图解决的问题:

如何测试调用 REST 的客户端代码和真正的 REST 服务器代码(以一种有效的方式)?

目标:

  1. 这将是一种集成测试,但又快又容易

  2. 它将允许检测例如客户端使用错误动词调用 REST 方法的错误(例如 PUT,但 API 接受 POST)

  3. 我发现通过部署 REST 服务进行集成测试然后使用我的 API 库进行调用过于复杂,所以我想用内存单元/集成测试替换它

  4. 我发现 Flurl 库很有用,所以我想在这样的测试中使用它。

  5. 灵感:https ://stackoverflow.com/a/37510032/1453525

我的想法: 我想让我的 Flurl Api 测试针对在内存中运行的真实 ApiController(使用 HttpServer),而不是使用 Flurl HttpTest。我在这里找到了这种技术:https ://stackoverflow.com/a/37510032/1453525 但是它每次都需要构建 HttpRequest 消息并且没有很好的 Api 进行测试。是否可以针对真正的内存 ApiController 测试运行 Flurl 代码?

0 投票
2 回答
984 浏览

c# - 如何在路径段中包含数字(哈希)字符#?

我必须下载一个文件(使用现有的 Flurl-Http 端点 [1]),其名称包含一个“ # ”,当然必须将其转义到 %23 以免与 uri-fragment 检测冲突。

但是 Flurl 总是会转义其余部分,但不会转义这个字符,从而导致 uri 无法正常工作,其中一半的路径和所有查询参数都丢失了,因为它们被解析为 uri-fragment:

回报:http://server/api/item%20#123.txt

这意味着 http 请求(使用Flurl.Http)只会尝试下载不存在的资源http://server/api/item%20

即使我预先转义该段,结果仍然完全相同:

再次返回:http://server/api/item%20#123.txt

有什么办法可以阻止这种“魔法”的发生?

Flurl.Url[1] 这意味着我有委托/接口,其中输入是我必须修改的现有实例。

0 投票
0 回答
739 浏览

c# - asp net core中的异常处理

我正在寻找有关如何最好地处理 asp net core 中的异常的一些指导。基于来自微软的这些文档,我设置了 UseStatusCodePagesWithRedirects 中间件。这适用于诸如 404 之类的东西。但是,对于我的代码中返回异常的 API 请求,这不起作用。所以按照这个文档,我设置了一个异常过滤器。这有点工作,这就是我寻求帮助的地方。

我在类库中有以下代码,因此可以在其他地方重新使用。我的 api 的迷你包装器。我正在使用 Flurl 构建请求。我的 viewModelBuilder 调用 GetAll。

如果 GetAll 抛出异常,那么下面的异常过滤器就会发挥作用。

我想根据异常状态代码做不同的事情。因此,对于 401 或 404,我想显示访问被拒绝屏幕或登录屏幕,然后对于其他错误可能只是一般错误屏幕。但是 context.HttpContext.Response.StatusCode 始终为 200。

  1. 这是做这件事的正确方法吗?错误处理文档表明中间件更好,但我不确定它是否指的是这个用例,因为我只能让它在 404 上工作。
  2. 如何在异常过滤器中获得正确的状态代码?

我知道,如果我在原始 GetAll 周围进行尝试,如下所示

然后在异常过滤器中我可以执行以下操作

然后我可以针对特定异常做特定的事情,但这意味着我必须尝试捕获每个调用并使全局异常过滤器的点无效。任何意见,将不胜感激。

谢谢米

编辑

基于这里的这个答案,我可以编写一个自定义中间件,我很快就做到了,但我仍然遇到同样的问题,即无法检查 401 或 403 并且只能访问已经存在的自定义异常扔。如果我可以访问状态码,那么我认为这两种解决方案都可以

0 投票
2 回答
1664 浏览

c# - 使用 Flurl 处理 Get/{id} 与 Get/id

我正在努力Flurl工作,但在传递 ID 时我被困在如何工作上。

以上预计

所以在 Flurl 中:

这会产生:

...然后以 404 失败。

如何让 Flurl 设置查询参数 /id 或让我的 get 同时接受 Get/id 和 Get?id=

我可以执行以下操作,但似乎不太优雅

0 投票
1 回答
2095 浏览

azure - 如何从 Flurl 获取 Access_Token

我正在开发一个应用程序,我有一个Azure API使用Owin Token Bearer. 我正在尝试登录到我的后端并像在我的网络客户端中一样获取令牌。我可以成功登录,但响应消息中没有令牌。我有这个代码

任何帮助都感激不尽。