如何使用代理进行 API 通话
How to use the proxy for API call
我正在使用 System.Net.Http.HttpClient 调用一些 API。
它在 UWP 中正常工作
它在 WASM 中失败并出现错误:"Operation is not supported on this platform."
堆栈跟踪显示这是 System.Net.WebProxy.CreateDefaultProxy() 失败。
最通用的 API 调用方式是什么?
目前,最好的处理方法是将默认处理程序设置为 Uno 的 WasmHttpHandler
,如下所示:
var httpMessageHandler = Type
.GetType("System.Net.Http.HttpClient, System.Net.Http")
.GetField("GetHttpMessageHandler",
BindingFlags.Static |
BindingFlags.NonPublic
);
httpMessageHandler.SetValue(
null,
(Func<HttpMessageHandler>)(() => new Uno.UI.Wasm.WasmHttpHandler())
);
请注意,这不会覆盖默认的 HttpHandler
行为,这意味着如果您明确使用它,您将得到相同的错误。
我正在使用 System.Net.Http.HttpClient 调用一些 API。
它在 UWP 中正常工作
它在 WASM 中失败并出现错误:"Operation is not supported on this platform."
堆栈跟踪显示这是 System.Net.WebProxy.CreateDefaultProxy() 失败。
最通用的 API 调用方式是什么?
目前,最好的处理方法是将默认处理程序设置为 Uno 的 WasmHttpHandler
,如下所示:
var httpMessageHandler = Type
.GetType("System.Net.Http.HttpClient, System.Net.Http")
.GetField("GetHttpMessageHandler",
BindingFlags.Static |
BindingFlags.NonPublic
);
httpMessageHandler.SetValue(
null,
(Func<HttpMessageHandler>)(() => new Uno.UI.Wasm.WasmHttpHandler())
);
请注意,这不会覆盖默认的 HttpHandler
行为,这意味着如果您明确使用它,您将得到相同的错误。