1

我在 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));

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

4

1 回答 1

0

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

虽然没有 API 可以在 WebView 上设置代理,但可以使用反射来完成。检查这个 SO 帖子 - WebView android 代理

于 2013-12-23T10:48:00.667 回答