Android WebView:使用模拟器时无法通过VPN访问网站

时间:2015-06-23 13:22:05

标签: android android-webview vpn

我正在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加载它时会出现同样的错误

1 个答案:

答案 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");

希望它可以帮助别人。