2010-06-08 8 views
4

Je crée une application de type navigateur Web (utilisant un objet de vue Web) qui doit pouvoir se connecter à Internet via un proxy. Le serveur, le port, le nom d'utilisateur et le mot de passe peuvent tous être codés en dur dans l'application mais malheureusement je n'ai aucune idée de comment personnaliser les paramètres de proxy d'une vue web sans changer les paramètres de proxy du système.Utilisation de la vue Web derrière un proxy (cacao)

Si vous savez comment faire cela, veuillez fournir un exemple de code, merci beaucoup! (En outre, si elle change quelque chose - Je développe pour mac, pas iPhone)

Répondre

4

La façon la plus simple que je sais est de câbler un UIWebView delegate et écouter toutes les demandes avant qu'ils traversent, et rediriger ceux que vous aimez environ à travers ASIHttpRequest et vos paramètres de proxy personnalisés.

- (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] 
} 

C'est un peu foutu, mais ça devrait marcher. Rappelez-vous juste de gérer correctement votre mémoire et n'utilisez pas ce code d'exemple qui fuit ... YMMV, je n'ai même pas testé si cela compile, tapé tout dans la fenêtre du navigateur avec du copier-coller.

Questions connexes