Ich habe eine URL von einem RSS-Feed, der, wenn er in einem Browser angezeigt wird, auf die vollständige URL umleitet, die IDs enthält, die ich in der App brauche. Gibt es einen Weg in einer App, dass ich die vereinfachte URL nehmen kann, die aus dem Feed kommt (zB www.somesite.com/Thing1) und im Wesentlichen den Link weiterleitet, um die volle URL zurück zu bekommen (zB www.somesite.com/id= 21424255) alles innerhalb der App.iPhone SDK: Erhalte eine weitergeleitete URL
Antwort
Sie müssen eine NSURLRequest
an die kurze URL durchführen und die Antwort erhalten. Sie wollen es als NSHTTPURLResponse
- eine Unterklasse von NSURLResponse
Vermutlich, wenn es eine 301-Weiterleitung, können Sie die Antwort-Header lesen und erhalten Sie die URL von der "Location" -Header.
NSDictionary *headers = [myHTTPResponse allHeaderFields];
NSString *redirectLocation = [headers objectForKey:@"Location"];
Werfen Sie einen Blick auf this Frage für ein detailliertes Beispiel der NSURLConnection
mit der Bitte zu schaffen.
Edit: Während der obige Code für andere Header-Felder gilt, wie Adam unten hingewiesen, müssen Sie die connection:willSendRequest:redirectResponse:
Delegate-Methode verwenden, um den Redirect-Speicherort zu erfassen, wie die Umleitung automatisch behandelt wird.
Wenn die kurze URL zur vollständigen URL umgeleitet wird, wird die Umleitung von NSURLConnection transparent gehandhabt. Um die Umleitungs-URL zu erhalten, müssen Sie
- (NSURLRequest *)connection: (NSURLConnection *)inConnection
willSendRequest: (NSURLRequest *)inRequest
redirectResponse: (NSURLResponse *)inRedirectResponse
auf dem NSURLConnection Delegierten implementieren. Die Umleitungsziel-URL lautet [inRequest URL]
Viel Glück.
Zuerst gibt es 3 Möglichkeiten, eine neue URL-Verbindung zu finden. (1) NSURLSession (2) NSURLConnection (3) NSURLDownload. Ich benutze hier NSURLConnection, um Ihnen zu erklären, wie es geht.
(1) Zunächst einmal wählen Sie Ihre URL, die Umleitungen (Ich wähle hier ‚http://www.google.com‘, weil es zu ‚http://www.google.co.in/?gws_rd=cr&ei=LEfeUvCeA8aLrQew04GICQ‘ umgeleitet wird) .Jetzt Erstellen Sie zunächst zwei Eigenschaften in .h-Datei wie unten.
@interface ConfigViewController()
@property (nonatomic, retain) NSURLRequest *request;
@property (nonatomic, strong, readwrite) NSURLConnection *connection;
@end
(2) Dann synthetisieren Sie Ihre Eigenschaften in .m-Datei.
@synthesize request;
@synthesize connection = _connection;
(3) Dann erstellen Sie Ihre NSURLRequest und NSURLConnection.
- (void)viewDidLoad{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.google.com"]];
assert(self.request != nil);
self.connection = nil;
self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
assert(self.connection != nil);
}
assert wird sicherstellen, dass Ihre vorbereitete Anfrage nicht Null sein wird, wenn es gleich Null dann wird es nur einen Fehler an diesem Ort zeigt, dann müssen Sie sicherstellen, dass Sie diesen Code werden folgende richtig .
(4) Implementieren Sie jetzt diese zwei Delegation in Ihrer .h-Datei - NSURLConnectionDelegate & NSURLConnectionDataDelegate.
@interface WTViewController : UIViewController <NSURLConnectionDelegate, NSURLConnectionDataDelegate>{
IBOutlet UITextView *txtPreviousLbl;
IBOutlet UITextView *txtNextlbl;
}
(5) Implementieren Sie dann diese drei Delegierungsmethoden zu Ihrer .m (Implementierung) -Datei.
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectedResponse{
NSURLRequest *redirectedRequest = request;
if (redirectedResponse) {
redirectedRequest = nil;
}
NSLog(@"RedirectedRequest:%@",redirectedRequest);
return redirectedRequest;
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
NSLog(@"error:%@",error);
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"Response:%@",response);
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSDictionary *responseDictionary = [httpResponse allHeaderFields];
NSString *strNewURLLocation = [responseDictionary objectForKey:@"Location"];
NSLog(@"ResponseDictionary:%@",[responseDictionary objectForKey:@"Location"]);
[[NSUserDefaults standardUserDefaults] setObject:strNewURLLocation forKey:@"serverurl"];
NSLog(@"NewURLLocation:%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"serverurl"]);
}
Hier finden Sie Ihre neue URL in get [[NSUserDefaults standardUserDefaults] objectForKey: @ "serverURL"], Sie einen NSUserDefaults oder NSString an Benutzer in Ihrem gesamten Projekt verwenden können. Hinweis: Bitte vergessen Sie nicht, diesen Code nur in UIViewController zu verwenden.Andernfalls kann Ihre Delegation in anderen Objektdateien nicht funktionieren. Haben Sie einen glücklichen Code ...
- 1. iPhone 3.0 SDK vs iPhone 2.0 SDK
- 2. Erhalte einen Objektschlüssel aus URL mit AWS SDK (v2)
- 3. Post Facebook-Status-Update UND URL über iPhone SDK
- 4. Iphone SDk: Problem mit kaufmännischem Und in der URL-Zeichenfolge
- 5. Problem mit iphone sdk 4.2.1
- 6. Wie URL-codieren Sie das @ -Symbol im iPhone SDK?
- 7. Wie funktioniert eine Radaranimation im iPhone SDK?
- 8. verschlüsseln Sie eine Datei auf iphone-sdk
- 9. Erstelle eine eindeutige Zeichenfolge Iphone SDK 3.0
- 10. iPhone SDK: Wie lokalisiere ich eine Klasse?
- 11. Wie erhalte ich eine Python-Verteilungs-URL?
- 12. Richten Sie eine iPhone-basierte Webschnittstelle in iPhone SDK ein
- 13. iPhone SDK: IBAction
- 14. UITextField Autocomplete - iPhone SDK
- 15. Zufallszahl in iphone sdk?
- 16. iPhone 3.1 SDK Kamerazugriff
- 17. Rasteransicht in iPhone SDK
- 18. iPhone SDK - Wlan-Liste
- 19. iPhone SDK audioSession Frage
- 20. iPhone sdk Vergrößern/Verkleinern
- 21. iPhone SDK Kurzanleitung
- 22. SOAP Anfrage auf iPhone SDK
- 23. iPhone sdk, MPMediaItemCollection speichern?
- 24. iPhone SDK UIBarButton Speicherlecks
- 25. iPhone sdk Anrufüberwachung
- 26. Standort GPS iPhone SDK
- 27. Warnungen in iphone sdk
- 28. ConnectionKit & iPhone SDK
- 29. iPhone sdk in Linux
- 30. iPhone SDK 3.0 Test