我正在创建一个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.