UIWebView capturant les en-têtes de réponse
J'ai cherché/googlé beaucoup, mais ne pouvait pas obtenir la réponse sur la façon de capture-têtes de réponse HTTP dans UIWebview
. Dire que j'ai rediriger l'utilisateur vers d'enregistrement de la passerelle(qui est déjà actif) dans UIWebview sur l'App Lancement et lorsque l'utilisateur a terminé l'enregistrement, l'application doit être notifié à la réussite de l'identifiant unique attribué à l'utilisateur sur l'enregistrement, qui est passé en-Têtes de Réponse HTTP.
Est-il un moyen direct de capture/imprimer les en-têtes de Réponse HTTP à l'aide de UIWebview
?
source d'informationauteur ACP | 2013-03-18
Vous devez vous connecter pour publier un commentaire.
J'aime l'objective-c runtime. Est-il quelque chose que vous voulez faire, mais n'ont pas une API pour cela? DM;HR.
Bien, sur une note plus sérieuse, voici la solution à cette question. Il s'agira de saisir chaque URL Réponse initiée à partir de
CFNetwork
qui est ce que UIWebView arrive à utiliser les coulisses. Il permettra aussi de saisir des requêtes AJAX, les chargements d'image, et plus encore.L'ajout d'un filtre pour ce qui devrait probablement être aussi facile que de faire un regex sur le contenu des en-têtes.
Il n'y a aucun moyen d'obtenir la réponse de l'objet de la
UIWebView
(fichier d'un bug avec apple pour que, id dire)MAIS deux solutions de contournement
1) par l'intermédiaire de l'partagé NSURLCache
si cela fonctionne pour vous, c'est idéal
D'AUTRE
UIWebView
🙂ce serait un mauvais solution de contournement pour ce! (comme Richard l'a souligné dans les commentaires.) Il a de grands inconvénients, et vous avez pour voir si c'est une solution valable dans votre cas
Si vous voulez un plus haut niveau de l'API de code de ce que @Richard J. Ross III de l'écrit, vous avez besoin de sous-classe NSURLProtocol.
Un
NSURLProtocol
est un objet qui gère les Demandes d'URL. De sorte que vous pouvez l'utiliser pour des tâches spécifiques qui sont décrites mieux sur NSHipster et Ray Wenderlichqui comprend votre cas, d'obtenir les en-Têtes HTTP de la Réponse.Code
Créer une nouvelle classe de sous-classement de NSURLProtocol et votre .h fichier devrait ressembler à ceci:
Votre .m le fichier doit avoir ces méthodes pour gérer ce que vous souhaitez pour
La dernière chose à faire est d'enregistrer le présent protocole pour le système de chargement qui est facilement réalisable sur AppDelegate:
NSHTTPURLResponse
a la méthode commePour plus d'info
https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSHTTPURLResponse_Class/Reference/Reference.html#//apple_ref/occ/cl/NSHTTPURLResponse
EDIT: Désolé, je ne pense pas que parler de
UIWebView
. Ma solution fonctionne si vous utilisezNSURLConnection
Mais si vous nourrissez vous webview avec un
NSURLConnection
alors vous avez la chance de capturer la connexion y compris les en-têtes de réponse.