Nov.
19

Changer facilement le User-Agent dans un UIWebView

Posté par mphweb le ven, 19/11/2010 - 17:33, avec 0 commentaires

UIWebView ne fournit aucune façon de changer le User-Agent.

Et non seulement il ne fournit aucune façon de le changer, mais il écrase aussi cette valeur quand on essaie de la définir dans un objet NSMutableURLRequest passé comme requête dans la méthode loadRequest d'un UIWebView.

Il y a quelques solutions que j'ai trouvé sur Internet qui fonctionnent mais aucune n'est parfaite :

Une solution est de définir User_Agent à la place de User-Agent dans un NSMutableURLRequest.

Cela fonctionne pour certains sites Internet mais pas tous car définir User_Agent n'écrase pas la valeur de User-Agent, mais ajoute simplement une autre valeur de header appelée User_Agent que certains sites utilisent à la place de User-Agent.

Une autre solution qui fonctionne bien est d'utiliser la méthode appelée Method Swizzling sur la classe NSMutableURLRequest pour regarder quand la valeur User-Agent est définie et écraser cette valeur pour avoir l'User-Agent désiré.

Le problème avec cette méthode est qu'elle n'est pas facile à implémenter et que le Method Swizzling peut être dangereux si on ne fais pas attention à la façon dont on l'utilise.

L'autre problème avec cette méthode est qu'Apple peur rejeter votre application si elle utilise le Method Swizzling.

J'ai donc cherché et trouvé (avec de la chance) une solution qui est simple, sans utiliser le Method Swizzling et qui écrase le vrai User-Agent (et pas User_Agent).

Voici la méthode de classe à ajouter à votre controleur principal (ou votre app delegate) :

  1. + (void)initialize {
  2.     // Set user agent (the only problem is that we can't modify the User-Agent later in the program)
  3.     NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Your desired user agent", @"UserAgent", nil];
  4.     [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
  5.     [dictionnary release];
  6. }

0 commentaires sur "Changer facilement le User-Agent dans un UIWebView"
Publier un nouveau commentaire
Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plus d'informations sur les options de formatage

CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.