Использование веб-просмотра за прокси (какао) - PullRequest
4 голосов
/ 09 июня 2010

Я создаю приложение типа веб-браузера (использующее объект веб-просмотра), которое должно иметь возможность подключаться к Интернету через прокси-сервер. Сервер, порт, имя пользователя и пароль могут быть жестко запрограммированы в приложении, но, к сожалению, я понятия не имею, как настроить параметры прокси веб-представления без изменения общесистемных параметров прокси.

Если вы знаете, как это сделать, предоставьте пример кода, большое спасибо! (Также, если что-то изменится - я разрабатываю для Mac, а не для iPhone)

1 Ответ

4 голосов
/ 16 июня 2010

Самый простой способ, который я знаю, это подключить UIWebView делегата и прослушать все запросы, прежде чем они пройдут, и перенаправить те, которые вам нужны, через 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, я даже не проверял, скомпилируется ли он, напечатал все это в окне браузера с некоторыми хакерами копирования и вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...