2

Je veux savoir s'il est possible de canaliser les requêtes web, et bien sûr ce qu'il faut utiliser/implémenter.Tunneling des requêtes web sur les iPhones

je déjà écrit des sous-classes nsInputStream et NSOutputStream envoyer & recevoir des données via mon serveur proxy personnalisé qui fonctionne à merveille pour les connexions socket.

J'ai essayé de mettre en œuvre les délégués de UIWebView et NSURLRequest, mais je n'a pas pu saisir toutes les requêtes HTTP faites à partir du UIWebView.

Merci d'avance.

+0

Nous aurons besoin de plus de détails sur ce que vous essayez d'accomplir. Y a-t-il une raison pour laquelle la prise en charge du proxy HTTP (S)/SOCKS à l'échelle du système ne fournit pas ce que vous voulez? –

+0

J'utilise un serveur proxy personnalisé qui utilise le cryptage RSA pour l'échange de clés, puis le cryptage AES pour la transmission des données, donc un proxy SOCKS est hors de question pour moi. Je suis en train d'essayer de porter le code Java sur l'iPhone, mais maintenant je suis bloqué sur le tunneling des connexions liées à HTTP. – Pada

Répondre

0

Vous pouvez essayer d'utiliser la catégorie pour capturer tous les appels de méthode pertinents (modèle ci-dessous). Cependant méfiez-vous des dragons et assurez-vous que vous envisagez d'utiliser la route proxy du système avant de faire cela.

UIWebView + PrivateProxy.h

@interface UIWebView (PrivateProxy) 
     - (void)loadRequest:(NSURLRequest *)request; 

@end 

UIWebView + PrivateProxy.m

@implementation UIWebView (PrivateProxy) 
    - (void)loadRequest:(NSURLRequest *)request { 
     if(request.something ....) { 
      // handle yourself ... 
     } else { 
      [super loadRequest:request]; // use stanadrd implementation 
     } 
    } 
@end 

cours Off vous aurez probablement à remplacer plusieurs méthodes par exemple rechargez, arrêtez le chargement, etc.

+0

Merci Maria. J'ai laissé un commentaire sur mon premier message sur pourquoi je ne veux pas utiliser un proxy SOCKS standard. J'ai déjà essayé de créer une sous-classe d'UIWebView et j'ai implémenté la méthode loadRequest, qui a été déclenchée seulement une fois. Je ne suis pas sûr si je devrais essayer et utiliser la méthode Swizzling, parce que vous ne pouvez pas appeler [super loadRequest: request] avec une classe classifiée UIWebView, puisque UIView est son parent et il n'a pas la fonction loadRequest. Pensez-vous que l'utilisation de la méthode Swizzling pourrait résoudre mon problème d'appel de loadRequest une seule fois - même pour www.google.com, qui a des images – Pada

+0

Veuillez noter que ma réponse ne sous-classe pas UIWebView. Il utilise des catégories pour étendre le comportement de classe existant - d'où il a un effet à l'échelle du système. Pour plus sur les catégories s'il vous plaît voir http://macdevelopertips.com/objective-c/objective-c-categories.html –

+1

Aaah .. le penny vient de tomber. Je pense que j'ai finalement compris la question. Cela fonctionnerait-il pour vous? http://www.icab.de/blog/2009/08/18/url-filtering-with-uiwebview-on-the-iphone/ –

Questions connexes