gpt4 book ai didi

c# - RestSharp 可移植 RestClient 代理属性不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:43 32 4
gpt4 key购买 nike

这就是问题所在。我正在使用在引擎盖下使用 HttpClient 的可移植 RestSharp。但对于 iOS,HttpClient 存在问题,因为默认 IWebProxy 实例不允许使用像 Charles 这样的请求监控软件来监控请求(look here 查看问题和解决方案)解决方案是使用 CFNetwork.GetDefaultProxy () 返回 IWebProxy 并将其设置为请求的代理。我尝试设置 RestClient 的 Proxy 属性,但它没有用,在挖掘可移植 RestClient 的开源代码时,我发现 Proxy 属性没有在任何地方使用.唯一使用它的地方被注释掉了。该方法在 RestSharp.Portable 项目 RestClient 文件中称为 ConfigureProxy 行 572,并且此方法仅从 ConfigureHttp 方法第 541 行相同的文件,也被注释掉了。我相信这是一个错误。可能有人在注释掉这段代码后忘记设置 Proxy。那么有人可以告诉我删除注释行是否安全,或者可以说设置 IHttp 接口(interface)代理的正确位置吗?例如,在附加图像的第 393 行(这又在 RestClient 文件中)设置代理是否安全,例如

httpRequest.Proxy = this.Proxy;

enter image description here

强文本

最佳答案

我在调试 RestSharp.Portable 3.1.0 源代码 2 天后自行解决了这个问题。


有一个错误RestSharp.Portable.HttpClient.Shared - 项目
DefaultHttpClientFactory - 类
CreateMessageHandler - 方法

原代码为:

if (handler.SupportsProxy && _proxyProperty != null && proxy != null)
{
_proxyProperty.SetValue(handler, new RequestProxyWrapper(proxy), null);
}

代码不起作用,因为 _proxyProperty 为空。该字段通过反射在构造函数中初始化。

_proxyProperty = typeof(HttpClientHandler).GetProperty("Proxy");

模拟器可以很好地初始化此属性,但真实的 iOS 设备不会。我不知道为什么会这样。

因此,这是包含修复的代码:

if (handler.SupportsProxy && proxy != null)
{
handler.Proxy = new RequestProxyWrapper(proxy);
}

我已使用反射将此修复程序添加到我的应用程序中。如果你想做同样的事情,你应该包装你的身份验证器或实现虚拟一个并覆盖两个方法:

public override bool CanPreAuthenticate(IHttpClient client, IHttpRequestMessage request, ICredentials credentials)
{
return true;
}

public override async Task PreAuthenticate(IHttpClient client, IHttpRequestMessage request, ICredentials credentials)
{
...
// get private "handler" field of type DefaultHttpClient from client by reflection here
// get private "proxy" field of type IWebProxy from "handler" by reflection here
// set private "proxy" field if it's null by reflection here
...
}

希望对您有所帮助。不要忘记在每个平台上测试您的解决方案:)

我在 github FubarDevelopment/restsharp.portable 上添加了新问题

关于c# - RestSharp 可移植 RestClient 代理属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340570/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com