我正在Eclipse模拟器中测试一个应用程序,它通过WebView加载一个站点。我的问题是,当我连接到我的工作VPN时,该站点才可以访问,我可以从我的PC浏览器访问它,但不能从模拟器访问它。这是我的代码:
public class MainActivity extends Activity {
public WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
myWebView = (WebView)this.findViewById(R.id.webView);
myWebView.getSettings().setLoadsImagesAutomatically(true);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.setWebViewClient(new CustomWebViewClient());
myWebView.loadUrl("https://xxx");
}
}
当我使用“http://google.com”进行测试时,它工作得很好,当我使用随机https网站时也一样,但是当我尝试访问VPN网站时,我收到了“net :: ERR_CONNECTION_TIMED_OUT”错误。 />
我已经连接到VPN,还检查了<uses-permission android:name="android.permission.INTERNET" />
是否在清单中的<application>
标记之前。我已经使用Eclipse模拟器和BlueStacks App Player进行了测试,在这两种情况下运行应用程序并将URL输入到模拟器的浏览器中,并且总是得到相同的结果。
对于Android中的此类访问是否存在任何限制仿真器?
在此先感谢,问候。
的更新
如果我从模拟器的浏览器访问IP地址,我可以访问该网站,但是当我尝试使用myWebView.loadUrl
加载它时会出现同样的错误
答案 0 :(得分:0)
最后我想出了如何加载我的网站,我把IP地址和端口而不是你在“hosts”文件中看到的URL。此外,我不得不覆盖CustomWebViewClient的onReceivedSslError
方法,因为我在加载页面时收到了认证错误:
@Override
public void onReceivedSslError(WebView view, android.webkit.SslErrorHandler handler, android.net.http.SslError error) {
handler.proceed();
};
现在loadUrl看起来像这样:
myWebView.loadUrl("https://IP:PORT/XXX");
希望它可以帮助别人。