Was ist der einfachste Weg, die ursprüngliche URL für eine kurze URL in Cocoa abzurufen? Alles, was in wenigen Zeilen erledigt werden kann?Einfachste Möglichkeit, eine lange URL für eine verkürzte URL in Cocoa zu erhalten?
Antwort
UPDATE: Ich habe gerade Ihren Kommentar gesehen und erkannte, dass es die Umleitung folgt.
Siehe Delegatmethode: connection:willSendRequest:redirectResponse:
, mit dem Sie es tut eine Umleitung auf diese neue Anforderung, auf der Grundlage der vorherigen Antwort erklärt.
Sie können die erweiterte URL entweder von der neuen Anforderung hier oder von der Standort-Kopfzeile der Weiterleitungsantwort abrufen.
Discussion If the delegate wishes to cancel the redirect, it should call the connection object’s cancel method. Alternatively, the delegate method can return nil to cancel the redirect, and the connection will continue to process. This has special relevance in the case where redirectResponse is not nil. In this case, any data that is loaded for the connection will be sent to the delegate, and the delegate will receive a connectionDidFinishLoading or connection:didFailLoadingWithError: message, as appropriate.
Ursprüngliche Antwort folgt ...
Verwenden NSURLConnection
mit einem Delegierten. Rufen Sie in der Methode connection:didReceiveResponse:
Ihres Stellvertreters allHeaderFields
ab und lesen Sie den Wert des Headers "Location".
Etwas wie:
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Expanded URL = %@", [[(NSHTTPURLResponse *)response allHeaderFields] objectForKey:@"Location"]);
}
würde ich eine wenig URLExpander
Klasse schafft dies persönlich zu tun, mit einer Signatur so etwas wie:
+(void)asyncExpandURL:(NSURL *)aURL didExpandTarget:(id)target selector:(SEL)selector;
Dann wieder zwei Argumente in Ihrer Nachricht nur passieren, eine für die kurze URL, eine für die lange.
Ich würde es ein Objekt machen und es nicht behalten das Ziel. Auf diese Weise können Sie das Objekt freigeben und dadurch die Anforderung abbrechen, wenn Ihr Objekt (z. B. das Dokument) nicht mehr vorhanden ist. –
Hmmm ... scheint den Header "Location" nicht zu senden: –
Verbindung: didReceiveResponse: { \t "Cache-Control" = "max-age = 300, muss revalidieren"; \t Verbindung = "Keep-Alive"; \t "Inhaltstyp" = "text/html; charset = UTF-8"; \t Date = "So, 19 Dec 2010 01:54:10 GMT"; \t Server = "Apache/2.2 "; \t" Set-Cookie "=" X-Mapping-edcdikko = AC17288FCF56ED010476BDE83D0C0E9D; path =/"; \t "Transfer-Encoding"= Identität; \t Vary = "Accept-Encoding, Cookie"; \t "Wp-Super Cache"= "Served supercache Datei von PHP"; \t} –
gibt es keine einfache Möglichkeit, müssen Sie den short-URL-Providing-Server anfordern und erhalten Sie die vollständige URL. Dies muss mit einer URL-Verbindung und vielleicht einige Logik hinter dem Umleiten Link (ich habe es noch nicht versucht)
Es muss auch keine vollständige GET-Anfrage sein, HEAD sollte ausreichen. – bcarlso
Wenn Sie die Anforderung nicht ausführen und den Weiterleitungen nicht folgen möchten, ist es einfacher, einen Link-Verlängerungsdienst zu verwenden. Hier sind zwei einfache APIs:
Ich kann einige Code-Schnipsel Post bald vor allem, wenn es Interesse.
- 1. Google URL Shortener ruft eine verkürzte URL durch Erstellung an
- 2. Verhindern verkürzte URL (durch htaccess)
- 3. Wie kann ich verkürzte URLs finden, die auf eine bestimmte lange URL verweisen?
- 4. Wie bekomme ich eine lange URL von einer kurzen URL?
- 5. Wie lange dauert eine URL für Internet Explorer 9?
- 6. Gibt es eine Möglichkeit, in URL Yii2 "+" in "-" zu konvertieren?
- 7. Einfachste Möglichkeit, eine unterzeichnete Nummer zu verschieben
- 8. Gibt es eine Möglichkeit, die abgerufene URL zu kennen?
- 9. Öffnen eine Nicht-Standard-URL in einem Cocoa-App
- 10. Eine Möglichkeit, die Umleitungs-URL herauszufinden
- 11. erhalten die URL, eine bestimmte URL-Umleitungen an
- 12. Gibt es eine Möglichkeit, Javascript-Variablen in URL zu übergeben?
- 13. Einfachste Möglichkeit, eine MySQL-Datenbank zu kopieren?
- 14. Einfachste Möglichkeit, Route in PHP zu mappen
- 15. Einfache Möglichkeit, tägliche Seitenaufrufe zu erhalten (unterschiedlich zu jeder URL)?
- 16. Eine URL-Miniatur auf iOS erhalten
- 17. Url.Action erzeugt querystring, eine Möglichkeit, vollständige URL zu erzeugen?
- 18. Mod_Rewrite Einfachste Möglichkeit, Ordner in URL für ALLE Unterverzeichnisse zu verstecken
- 19. Gibt es eine Möglichkeit in Jersey die Klasse von URL zu erhalten
- 20. Einfachste Möglichkeit, eine Route zu definieren, die eine 404 zurückgibt
- 21. Sitecore, zu lange Artikel-URL, mehrere Websites
- 22. Benutzerfreundliche Möglichkeit, eine Aufgaben-ID zu erhalten?
- 23. Facebook Graph API - ID für eine URL erhalten?
- 24. Ist es möglich, eine URL zu urlen, die eine URL-codierte URL enthält?
- 25. Erhalten von Kommentaren für eine URL über Facebook Grafik api
- 26. Gibt es eine Möglichkeit, eine vordefinierte URL für ein S3-Objekt mit AWS CLI zu generieren?
- 27. .htaccess URL zu erhalten Parameter
- 28. Wie behandelt man eine lange URL mit mehreren $ _GET?
- 29. Einfachste Möglichkeit, eine Textdatei in Java zu verschlüsseln
- 30. Der Versuch, zwei URLs zusammenzufügen, um eine URL zu erhalten
Definieren Sie zunächst eine kurze URL. Zweitens, wenn Sie nicht alle Teile der ursprünglichen URL haben, können Sie sie nicht aus dem Nichts herausziehen. –