如何在WebView(Android)中使用代理配置?

时间:2013-10-04 19:13:20

标签: android webview proxy

我在SOF中搜索了很多,但仍未找到解决问题的方法。 我需要编写使用代理配置(包括登录名和密码)并连接到一些被阻止的URL的应用程序。 我用这个:

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setGeolocationEnabled(true);
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    WebView.enablePlatformNotifications();
    mWebView.loadUrl("https://m.facebook.com/"); 
    mWebView.setWebChromeClient(new WebChromeClient() {
         public void onGeolocationPermissionsShowPrompt(String origin,
                  GeolocationPermissions.Callback callback) {            
            callback.invoke(origin, true, false);
         }
        });

而且:

    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpHost proxy = new HttpHost(PROXY_HOST, PROXY_PORT_INT);
    httpclient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
    httpclient.getCredentialsProvider().setCredentials(
        new AuthScope(PROXY_HOST, PROXY_PORT_INT),
        new UsernamePasswordCredentials(USERNAME, PASSWORD));

我想我应该以某种方式连接这些部分。但我不知道如何:(

1 个答案:

答案 0 :(得分:0)

WebView自行处理HTTP请求/响应。您正在尝试使用新的HTTP客户端来获取HTTP响应。虽然有一种方法可以在WebView中显示DefaultHttpClient的响应(请参阅此主题 - https://stackoverflow.com/a/3007978/255872),但这非常麻烦。相反,您可以直接在WebView上设置代理。

虽然没有API在WebView上设置代理,但可以使用Reflection进行代理。检查此SO帖子 - WebView android proxy