UIWebView iOS5 ändert User-Agent
Wie kann ich den user-agent von UIWebView von iOS 5?
, Was ich bisher getan habe:
Mit dem Delegaten-Aufruf wieder abzufangen NSURLRequest, erstellen Sie eine neue url-Anforderung und setzen Sie den user-agent als was ich will, dann die Daten herunterladen, und laden Sie die UIWebView mit "loadData:MIMEType:....".
Problem:
Dies bewirkt, dass eine unendliche Rekursion, wo ich die Daten laden, die ruft den Delegaten zurück, der die Praktikantin ruft den Delegaten....
Hier ist die delegate-Methode:
- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
dispatch_async(kBgQueue, ^{
NSURLResponse *response = nil;
NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:[request URL]];
NSDictionary *headers = [NSDictionary dictionaryWithObject:
@"custom_test_agent" forKey:@"User-Agent"];
[newRequest setAllHTTPHeaderFields:headers];
[self setCurrentReqest:newRequest];
NSData *data = [NSURLConnection sendSynchronousRequest:newRequest
returningResponse:&response
error:nil];
dispatch_sync(dispatch_get_main_queue(), ^{
[webView loadData:data
MIMEType:[response MIMEType]
textEncodingName:[response textEncodingName]
baseURL:[request URL]];
});
});
return YES;
}
Kommentar zu dem Problem - Öffnen
Bitte teilen Sie setCurrentReqest Methode.
InformationsquelleAutor der Frage 0xSina | 2011-12-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie den "UserAgent" default-Wert durch ausführen dieses Codes einmal, wenn die app startet:
EDIT: ich benutzte diese mit großem Erfolg, aber möchten Sie weitere details. Um einen user-agent, können Sie die "Entwickler" - Menü, stellen Sie die user-agent, und dann eine Verbindung zu dieser Seite bekommen Sie ausgedruckt für Sie: WhatsMyAgent. Ebenso können Sie eine Verbindung mit jeder Art von mobilen Gerät, und bekommen es auch. BTW ist dies noch funktioniert gut in iOS7+
InformationsquelleAutor der Antwort Martin Wickman
In Swift verwenden Sie diese Option, um UserAgent,
Verwenden Sie dies, um zu prüfen,
InformationsquelleAutor der Antwort Zaid Pathan
Wenn Sie die Nachricht senden
[aWebView loadData:MIMEType:textEncodingName:baseURL:]
dann
aWebView shouldStartLoadWithRequest:
wird erneut aufgerufen, und dann wieder - deshalb ist Sie eine unendliche RekursionSollten Sie einschränken Aufruf Ihrer
dispatch_async()
blocken, zum Beispiel mit Hilfe von einigen konventionellen URL:InformationsquelleAutor der Antwort funberry