NSURLConnection et user-agent
Salut,
je crois que je vais devenir dingue avec iOS5, j'essaye de positionner un user-agent dans une requete :
Et bien ce code ne fonctionne pas sur iOS5. Si je ne met pas de UA particulier je récupère celui de l'application, si j'en met un je récupère celui de Safari Mobile !!
Pour le moment la seule solution que je vois est d'utiliser une API comme ASIHTTPRequest, du moins si elle est indépendante des classes du SDK.
Quelqu'un a déjà eu mon problème ou utilisé ASIHTTPRequest ?
je crois que je vais devenir dingue avec iOS5, j'essaye de positionner un user-agent dans une requete :
<br /> request = [[NSMutableURLRequest requestWithURL:url] retain];<br /> [request setValue:@"mon UA" forHTTPHeaderField:@"User-Agent"];<br /> <br /> NSLog(@"user-agent = %@", [request valueForHTTPHeaderField:@"User-Agent"]);<br /> NSURLConnection* oConn = [NSURLConnection connectionWithRequest:request delegate:self];<br /> [oConn start];<br />
Et bien ce code ne fonctionne pas sur iOS5. Si je ne met pas de UA particulier je récupère celui de l'application, si j'en met un je récupère celui de Safari Mobile !!

Pour le moment la seule solution que je vois est d'utiliser une API comme ASIHTTPRequest, du moins si elle est indépendante des classes du SDK.
Quelqu'un a déjà eu mon problème ou utilisé ASIHTTPRequest ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Toujours est-il que j'en suis arrivé là car le method swizzle pour changer le user-agent d'une requête ne fonctionne plus sous iOS5, donc je cherchais d'autres solutions.
Donc pour résumer :
la UIWebView impose son User-Agent
On peut positionner le User-agent mais uniquement sur les requêtes extérieures à la webview, pour les ressources ou les requêtes faites en javascript, la webview reprend le user-agent standard.
Moi je l'ai modifié pour toutes les requêtes, avec la méthode de delegate (c'est vrai qu'il faut regarder au debuguer et savoir / réaliser en regardant la variable que la NSURLRequest est en fait Mutable donc qu'on peut la modifier à la volée) : Donc en gros quand la UIWebView essaye de charger une requête, n'importe laquelle, tu modifies son User-Agent à la volée pour chaque requête (marche que ce soit des requêtes suite à un clic, à un redirect, etc)
Pour info il y a aussi cette solution http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview
Mais qui semble utiliser une propriété UserAgent non documentée. Par contre ça marche partout si on n'a pas besoin de le changer.
Moi ça m'ira pas car cela dépend des cas (comme tu peux le voir dans mon code j'ai une propriété useDesktopUserAgent qui peut parfois être YES, parfois NO) par contre. Du coup le swizzling peut être une option aussi (en faisant gaffe et sachant ce qu'on fait).