【问题标题】:Android Proxy SettingAndroid 代理设置
【发布时间】:2013-05-06 03:49:55
【问题描述】:

我想用我已经拥有的代理浏览一些网站(当然还有我想要制作的应用程序)。我想以编程方式更改它(无需转到设置或其他第三个应用程序)。

这是我所做的:

public class WebViewActivity extends Activity {


 WebView web;
 String PROXY_IP = "MyProxy";  
 int PROXY_PORT = MyPort; 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web_view);

        web = (WebView) findViewById(R.id.webView1);
        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl("MyURL");

        if (PROXY_IP != null) {                 
        DefaultHttpClient httpClient = new DefaultHttpClient();
         httpClient.getCredentialsProvider().getCredentials(new AuthScope(PROXY_IP, PROXY_PORT));  
         new UsernamePasswordCredentials("username","passsword");
        HttpHost proxy = new HttpHost(PROXY_IP, PROXY_PORT);             

        }
    }

我为此使用 webview。我已经尝试过使用 phonegap 并只是编辑资产。但我对一些 php 代码感到困惑。所以我决定改用 webview。

问题是如何使用我的代理制作我的 webview。

注意:我使用的是 GB 2.3

【问题讨论】:

    标签: android proxy httpclient http-proxy


    【解决方案1】:

    您是否尝试过 Android 代理库? https://github.com/shouldit/android-proxy-library

    这可能是你的解决方案

    【讨论】:

    • 任务是我只需要硬编码代理端口和主机。所以我不需要图书馆。
    【解决方案2】:

    问题已解决。在 webview onCreate 我必须调用 url。像这样web = callURL(); 并加载 url 使用 loadDatawithBaseUrl。之后,您必须创建一个 public class callURL(){ 。在那里设置代理。像这样

    DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpHost proxy = new HttpHost("your host", your proxy); //proxy that i need
        httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
        httpClient.getCredentialsProvider().setCredentials(  
                new AuthScope("your host", your proxy),  
                new UsernamePasswordCredentials(  
                        "your username", "your password"));
    

    然后在httpget中。也打电话给你的网址。就是这样。祝你好运

    【讨论】:

    • 它不适用于 webview。但它是为了获取数据
    【解决方案3】:

    试试下面的方法。我不知道这是否正确。试试看吧。

    DefaultHttpClient httpClient = new DefaultHttpClient();
    httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY,new
     NTCredentials(user, pass, null, null));
    

    【讨论】:

    • 它表示将参数 2 转换为 Credential。这里是httpClient.getCredentialsProvider().setCredentials(AuthScope.ANY,(Credentials) new。我也需要用硬编码填写用户名和密码吗?还是只是在 url 加载时,它要求凭据。 PS:仍然不会加载网络
    • 在这种方法中你必须硬编码朋友的用户名和密码。
    • 是的,我已经尝试过了。但似乎我无法连接 web.loadurl 和 myproxy 集。
    猜你喜欢
    • 2014-05-13
    • 2023-03-25
    • 1970-01-01
    • 2019-04-18
    • 2013-03-12
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多