问题标签 [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 投票
1 回答
907 浏览

android - 当服务器不活动时,在 Flurl Http 调用中出现未经处理的异常

我已经复制了下面的异常。我已经通过 VPN 连接了我的 Android 设备,如果 VPN 连接失败,则 FlurlHttp 调用给出未处理的异常。我正在 Xamarin.Android 上开发应用程序。如果设备通过 VPN 连接,那么它工作正常。请有人给出一些解决方案,如何处理它。如何使用 Flurl Http 调用获取响应 StatusCode (200)?

0 投票
1 回答
4609 浏览

api - 如何使用 Flurl 从 API 获取消息?

我使用 C# 在 .NET Core 2 中创建了一个 API。它返回一个ActionResult带有状态码和字符串消息的。在另一个应用程序中,我使用 Flurl 调用 API。我可以得到状态码号码,但我找不到获取消息的方法。如何获取消息或者我需要在 API 中进行哪些更改才能以 Flurl 可以获取的方式放置消息?

这是 API 的代码。此示例中的“消息”是“对不起!”。

这是另一个调用 API 的应用程序中的代码。我可以使用 获取状态代码编号 (500)(int)getRespParams.StatusCode和使用 获取状态代码文本 (InternalError) getRespParams.StatusCode,但是如何获取“对不起!” 信息?

0 投票
1 回答
3569 浏览

c# - 如何在 Flurl 中为 Web 请求使用代理?

我有一个使用 Flurl 客户端的简单发布请求,我想知道如何使用代理使用 IP、端口、用户名和密码等信息来发出这个请求。

0 投票
1 回答
356 浏览

c# - 使用 Flurl.Http,有没有办法确定发送的字节数?

我想知道使用 Post 或 PostAsync 时实际传输了多少字节。我正在使用类似于以下的代码。我可以查看 filePath 的字节,但在我的真实代码中,我在读取和发送之间对文件流进行了一些操作。如果你拔MyFilteredContent线,你会怎么做?

0 投票
1 回答
656 浏览

.net - Flurl 与 .net core 2.1 的兼容性

在 .NET Core 2.1 中完全重写了 HttpClient。现在有很多改进,比如它使用 websockets 等。它还修复了并发问题。我想问FLurl是使用新的.NET core HttpClient还是使用oldone?如果是较旧的情况,那么何时/是否要更新?

0 投票
1 回答
3447 浏览

http - ASP.Net Core 2.1 和 IHttpClientFactory 中的 Flurl 客户端生命周期

Flurl 指出使用单例客户端是推荐的模式:

HttpClient 旨在被实例化一次并在应用程序的整个生命周期中重复使用。特别是在服务器应用程序中,为每个请求创建一个新的 HttpClient 实例将耗尽重负载下可用的套接字数量。这将导致 SocketException 错误。

但自 Asp.Net Core 2.1 以来,Net Core 2.1 中更新了 HttpClient 生命周期规则

当你使用 HttpClientFactory 请求一个 HttpClient 时,实际上你每次都会得到一个新的实例,这意味着我们不必担心改变它的状态。此 HttpClient 可能(或可能不)使用池中现有的 HttpClientHandler ,因此使用现有的打开连接。

如何修改 Flurl 以在引擎盖下使用 IHttpClientFactory?我应该创建自定义 Flurlsettings.HttpClientFactory并通过 MS IHttpClientFactory 创建 HttpClient 吗?

0 投票
1 回答
1399 浏览

c# - 删除/忽略 HTTP 请求上的 ServicePointManager.SecurityProtocol

我正在开发一个 C# .NET 应用程序,该应用程序需要与不同服务器上的不同服务进行通信。我不参与服务器的配置,所以我必须满足他们的安全要求。所有的通信都是通过使用 Flurl 的 http 调用进行的。

我从要求将 SecurityProtocolType 设置为 TLS 1.2 的服务器获取信息,因此在发送我的 http 请求之前,我将其设置在我的代码中:

这很好用。问题是我必须从另一台服务器获取信息,如果我在 ServicePointManager 上设置了任何 SecurityProtocol,我将无法进行身份验证。如果我在 SecurityProtocol 上评论我之前的设置,我可以进行身份​​验证。如果我不这样做,我不能。

有什么方法可以“取消设置”、忽略或删除该 ServicePointManager.SecurityProtocol 设置?我已经尝试将它设置为 SystemDefaul,以及所有 tls 和 ssl 选项,但只有在我根本不设置它时它才会起作用。

在第二次通信中(我无法设置 SecurityProtocol),我也忽略了 SSL 问题

0 投票
1 回答
77 浏览

xamarin.forms - Xamarin.IOS Flurl.Http 参考未解决

我正在构建一个 Xamarin.Forms 应用程序 (.NETStandard 2.0),并且我的 Android、iOS 和 UWP 项目使用的项目库之一正在使用 Flurl.Http。

上面,我根据需要将 Flurl 添加到 Proj B 库 Dependencies/NuGet 中。之后,我可以很好地构建我的 Android 和 UWP 头项目,但我的 IOS 项目无法构建并出现错误:

0 投票
1 回答
1156 浏览

tcpclient - FlurlClient 同时请求的行为是什么?

据我所知,在 HTTP 1.1 中,您可以对多个请求使用相同的 TCP/IP 连接,但在该连接上一次不能执行多个请求。换句话说,它必须像:请求,响应,请求,响应,请求,...。你不能做这样的事情:Req1,Req2,Resp1,Req3,Resp3,Resp2。也许你可以使用 HTTP/2,我不知道。

无论如何,我的问题是:如果您尝试使用 FlurlClient 发送多个同时请求会发生什么?

喜欢:


我知道 HttpClient 的答案。

答案是,如果您在请求已经挂起时尝试​​在 HttpClient 上启动另一个请求,HttpClient 将创建一个新的 TCP/IP 连接。而如果您一直等到第一个请求完成,HttpClient 会为第二个请求重用连接。

我的猜测是 FlurlClient 是一样的。

0 投票
1 回答
1179 浏览

c# - HttpClientHandler RFC 7616 Digest Authentication Header 使用错误的 Uri

我正在尝试访问 Lighttpd 服务器上的资源,该服务器强制完整的请求 URI 与授权请求标头中的 URI 匹配。这在RFC 7616中指定

认证服务器必须确保“uri”参数指定的资源与请求行中指定的资源相同;如果不是,服务器应该返回 400 Bad Request 错误。(由于这可能是攻击的征兆,服务器
实现者可能需要考虑记录此类错误。)
在此字段中从请求 URL 复制信息的目的是
处理中间代理可能更改
客户端请求的可能性-线。这个改变的(但可能在语义上
等价的)请求不会产生
与客户端计算的相同的摘要。

我正在使用Flurl 库(v1.4),它只是 HttpClient 的一个包装器。但是,HttpClientHandler 来自.Net。

为什么它使用基本 URI 而不是完整的 URI?它是一个错误吗?如何让它使用完整的 URI?

我想在管道中添加另一个HttpMessageHandler并使用完整的 URI 修改Authentication标头,但是HttpClientHandler不允许您设置InnerHandler

完整的Uri 应该是:http://base/resource.cgi?my=1¶ms=2

但这是请求标头中出现的内容:

授权: Digest username="user",realm="serve",nonce="5b911545:eaf4352d2113e5e4b1ca253bd70fd90a", uri="/base/resource.cgi" ,cnonce="bf7cf40f1289bc10bd07e8bf4784159c",nc=000,00001,qop="auth"响应="cf3c731ec93f7e5928f19f880f8325ab"

会导致 400 Bad Request响应。

我的 Flurl 代码:

HttpClient 工厂

请求代码