使用代理背后的Web视图(可可)

我正在创建一个Web浏览器类型的应用程序(使用Web视图对象),需要能够通过代理连接到Internet.服务器,端口,用户名和密码都可以硬编码到应用程序中,但遗憾的是我不知道如何在不更改系统范围代理设置的情况下自定义Web视图的代理设置.

如果您知道如何操作,请提供一些示例代码,非常感谢!
(另外,如果它改变了什么 – 我正在开发mac,而不是iPhone)

解决方法

我知道最简单的方法是连接 UIWebView delegate并在所有请求通过之前收听,并通过 ASIHttpRequest和您的自定义代理设置重定向您关注的请求.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    // Configure a proxy server manually
    NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com/ignore"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setProxyHost:@"192.168.0.1"];
    [request setProxyPort:3128];

    // Alternatively,you can use a manually-specified Proxy Auto Config file (PAC)
    // (It's probably best if you use a local file)
    [request setPACurl:[NSURL URLWithString:@"file:///Users/ben/Desktop/test.pac"]];

    // fire the request async
    [request setDelegate:self];
    [request startAsynchronous];

    return NO;
}


- (void)requestFinished:(ASIHTTPRequest *)request
{
   NSData *responseData = [request responseData];
   // todo: save data to disk and load with [self webView]
}

它有点不稳定,但它应该工作.只记得正确管理你的内存并且不要使用这个泄漏的示例代码… YMMV,我甚至没有测试过这个编译,在浏览器窗口中输入所有内容并使用一些复制和粘贴hackery.

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...