Cocoaで短縮URLの元のURLを取得する最も簡単な方法は何ですか?ほんの数行でできることはありますか?
3 に答える
更新:私はあなたのコメントを見て、それがリダイレクトに従っていることに気づきました。
connection:willSendRequest:redirectResponse:
前の応答に基づいて、この新しい要求へのリダイレクトを実行していることを通知するデリゲートメソッドを参照してください。
展開されたURLは、ここの新しいリクエストから、またはリダイレクト応答のLocationヘッダーから取得できます。
ディスカッションデリゲートがリダイレクトをキャンセルしたい場合は、接続オブジェクトのcancelメソッドを呼び出す必要があります。または、デリゲートメソッドがnilを返してリダイレクトをキャンセルすると、接続は処理を続行します。これは、redirectResponseがnilでない場合に特別な関連性があります。この場合、接続用にロードされたデータはすべてデリゲートに送信され、デリゲートは必要に応じてconnectionDidFinishLoadingまたはconnection:didFailLoadingWithError:メッセージを受信します。
元の答えは次のとおりです...
NSURLConnection
代理人と一緒に使用します。デリゲートのメソッドで、「Location」ヘッダーの値をconnection:didReceiveResponse:
フェッチして読み取ります。allHeaderFields
何かのようなもの:
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Expanded URL = %@", [[(NSHTTPURLResponse *)response allHeaderFields] objectForKey:@"Location"]);
}
これを個人的に行うための小さなURLExpander
クラスを作成し、次のような署名を付けます。
+(void)asyncExpandURL:(NSURL *)aURL didExpandTarget:(id)target selector:(SEL)selector;
次に、メッセージで2つの引数を返します。1つは短縮URL用で、もう1つは長いURL用です。
簡単な方法はありません。short-url-pproving-serverをリクエストして完全なURLを取得する必要があります。これは、URL接続と、リダイレクトリンクを取得するための背後にあるロジックを使用して実行する必要があります(まだ試していません)
リクエストを送信してリダイレクトをたどりたくない場合は、リンク延長サービスを使用するのがより簡単な方法です。2つの簡単なAPIを次に示します。
特に興味がある場合は、すぐにいくつかのコードスニペットを投稿する可能性があります。