在 Mac 上从 Visual Studio 调用 URL。 GetAsync 永远不会返回
Posted
技术标签:
【中文标题】在 Mac 上从 Visual Studio 调用 URL。 GetAsync 永远不会返回【英文标题】:Calling URL from Visual Studio on Mac. GetAsync never returns 【发布时间】:2021-07-11 13:32:23 【问题描述】:我在 Windows 上的 Visual Studio C# 上已经多次这样做了。
现在我正在使用我的 Mac - 在 Visual Studio C# 中创建一个 Xamarin 应用程序,这个简单的代码不起作用:
using (HttpClient myClient = new())
myClient.DefaultRequestHeaders.Accept.Clear();
myClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await myClient.GetAsync(url);
string result = await response.Content.ReadAsStringAsync();
return result;
网址是:“http://webcode.me”。
我尝试创建一个 URI,同样的问题。
发生的事情是,当代码行:
HttpResponseMessage 响应 = 等待 myClient.GetAsync(url);
被调用,它永远不会返回。而且应用永远不会启动。
当然,我使用的url只是一个测试url,但是调用这个方法后,我的输出窗口是这样的:
2021-04-16 15:40:07.653142+0200 PHC.ios[3243:87620] Starting Up
Resolved pending breakpoint at 'Main.cs:35,1' to void PHC.iOS.Application.<GetBridges>d__2.MoveNext () [0x000b2].
Resolved pending breakpoint at 'Communicator.cs:44,1' to void PHC.BridgeCommunication.Communicator.<DoGet>d__4.MoveNext () [0x00189].
2021-04-16 15:40:07.664131+0200 PHC.iOS[3243:87620] Now trying URL: http://webcode.me
Resolved pending breakpoint at 'Communicator.cs:58,1' to void PHC.BridgeCommunication.Communicator.<DoGet>d__4.MoveNext () [0x001b9].
Thread started: #2
2021-04-16 15:40:08.249780+0200 PHC.iOS[3243:87661] SecTaskLoadEntitlements failed error=22 cs_flags=200, pid=3243
2021-04-16 15:40:08.250077+0200 PHC.iOS[3243:87661] SecTaskCopyDebugDescription: PHC.iOS[3243]/0#-1 LF=0
2021-04-16 15:40:08.259552+0200 PHC.iOS[3243:87661] [] nw_protocol_get_quic_image_block_invoke dlopen libquic failed
Thread started: #3
Thread started: #4
Thread started: <Thread Pool> #5
Thread started: <Thread Pool> #6
它会随着线程启动和线程停止信息永远持续下去。
“正在启动”和“正在尝试 URL:http://webcode.me”是调用此函数的类的控制台输出。在控制台中写完这些东西后,就会调用如上所示的方法。
我可以在我的 Windows Visual Studio 上运行,完全没有问题。
我不是 Mac 专家,但我想知道我的 Mac 是否以某种方式阻止了通话。防火墙已关闭。
谁能帮帮我?
【问题讨论】:
谷歌SecTaskLoadEntitlements failed error=22 cs_flags=200
,例如:apple.stackexchange.com/questions/237465/…
对于HttpClient的实现,你可以查看下面的链接。安卓:docs.microsoft.com/en-us/xamarin/android/app-fundamentals/… iOS:docs.microsoft.com/en-us/xamarin/cross-platform/macios/…
感谢两位的意见。我按照链接阅读了所有相关信息。 :) 现在,我对你并不诚实,我要访问的 URL 是“https://....”。所以它是加密的。上面的 URL 是一个测试 URL,我试图看看它是否有效。所以我的问题不在于无 SSL。无论如何,我尝试了在您的链接中找到的选项 - 仍然得到同样的错误。
您是否尝试使用其他链接?还是出现同样的错误?
是的,尝试了 3 个不同的 URL。
【参考方案1】:
好的——首先。该错误与 API 调用无关。 API 调用是异步的,应用程序继续运行并遇到了该错误。
我删除了 API 调用并发现了这一点。
然后我从使用 HttpClient 更改为使用 HttpWebRequest,突然我的请求通过并很好地返回。
我仍然不知道为什么我的 HttpClient 根本不起作用,但我将关闭这张票,因为我不再需要答案了。谢谢大家的评论。
【讨论】:
以上是关于在 Mac 上从 Visual Studio 调用 URL。 GetAsync 永远不会返回的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio for Mac 中将参数传递给 Main() C#
使用 Visual Studio for Mac 使用 SpecFlow 进行 .NET Core 集成测试
Visual Studio Code 中的 PATH 变量与 Mac 上的终端不同