Android emulator 单机器人GenyMotion通过代码访问互联网

Android emulator 单机器人GenyMotion通过代码访问互联网,android-emulator,xamarin.android,virtualbox,Android Emulator,Xamarin.android,Virtualbox,在过去的一周里,我一直在努力让它发挥作用。我下载了这个很棒的工具,它是android的genymotion模拟器。但我不能从我的代码行访问互联网 using( WebClient wbclient = new WebClient() ) { try { String URI = "http://www.timeapi.org/utc/now";

在过去的一周里,我一直在努力让它发挥作用。我下载了这个很棒的工具,它是android的genymotion模拟器。但我不能从我的代码行访问互联网

        using( WebClient wbclient = new WebClient() )
        {
            try
            {                    
                String URI = "http://www.timeapi.org/utc/now"; // test purpose only
                Stream s = wbclient.OpenRead( URI );
                using( StreamReader r = new StreamReader( s ) )
                {
                    string str = r.ReadToEnd();
                }
            }catch(Exception ex)
            {
               // handle...
            }
        }

这是一个返回时间的简单服务。如果我在来宾设备genymotion(android 4.2.2-api17)的浏览器中输入这个地址,浏览器工作正常,时间返回。但是上面的代码抛出了一个异常“连接超时”。为什么在我的来宾设备中,可以从浏览器中检索上述url,并在通过WebClient对象访问代码时正确显示时间和引发异常?谢谢

这不是你的代码:你发现genymotion不在互联网上-这个漏洞是官方设计的。发生这种情况的原因是genymotion(VirtualBox的包装器)断开了正确适配器的连接(您可能在VirtualBox中设置了适配器,也可能没有设置适配器),而是使用了它自己的(错误的)“仅主机适配器”网络设置,然后隐藏它这样做

要修复这个极不公平的“bug”(功能?),您必须进入VirtualBox,按名称查找GenyMotion计算机,然后关闭它,右键单击“设置”网络,然后单击“适配器2”(选项卡)下的“启用网络适配器”,然后单击“附加到:>桥接适配器”假设你的电脑是在DHCP下运行的,它会为Android虚拟机设置一个IP,GenyMotion宣称它是自己的(事实并非如此)