2012-10-25 13 views
5

In iOS, mi piacerebbe essere in grado di associare un NSURLRequest-qualsiasiNSURLRequest, se una richiesta di navigazione o immagine o foglio di stile richiesta - con il UIWebView che lo ha inviato. Ciò sembra richiedere l'implementazione di una sottoclasse NSURLProtocol per acquisire e analizzare le richieste man mano che si presentano. Tuttavia, non riesco a trovare un modo per correlare una richiesta con la sua vista web, e NSURLProtocol sembra solo capire NSURLRequest s.Correlare NSURLRequest con UIWebView

Questo andrebbe bene per le richieste di navigazione, come ho potuto fare l'associazione nel mio UIWebViewDelegate. Ma questo non funzionerà per le richieste di risorse secondarie come le immagini, che non attivano i metodi UIWebViewDelegate.

Qualcuno ha qualche idea sul modo migliore per creare questa associazione?

+0

NSURL * url = [NSURL URLWithString: urlAddress]; // Crea un oggetto URL. NSURLRequest * requestObj = [NSURLRequequest requestWithURL: url]; // URL Requst Object [web loadRequest: requestObj]; – kamleshwar

+0

Se NSURLRequest ottiene una risposta HTML contenente, ad esempio, tag img in essa, UIWebView avvierà automaticamente richieste secondarie per recuperare tali dati. Voglio correlare anche quelle richieste. – KevinH

risposta

0

Se ho capito bene la tua domanda, si può solo fare NSURL *url = [[webView request] URL];

+0

Se ho una pagina web su www.yahoo.com che ha un collegamento immagine a maps.google.com, la proprietà 'URL' di UIWebView non avrà alcuna correlazione con l'URL rappresentato nella richiesta di immagine. – KevinH

0

Nel vostro protocollo personalizzato, metodo delegato canUseProtocol viene chiamato per le risorse si fa riferimento pure. Potresti essere in grado di sfruttare questo hook per collegare le tue richieste, ma non sono sicuro che tu possa ottenere una callback di errore senza annullare quella richiesta ed eseguirne una separata con l'url.

La tua domanda sulle risorse di riferimento mi ha portato a questa scoperta, che mi ha permesso di risolvere un problema di memorizzazione nella cache che stavo svolgendo.

Grazie e spero che questo aiuti in cambio!