私は、ブラウザに表示されたときに、アプリケーションに必要なIDを含む完全なURLにリダイレクトするRSSフィードのURLを持っています。私は、フィード(www.somesite.com/Thing1)から来る簡略化されたURLを取ることができ、本質的に完全なURLを取得するためにリンクを転送する方法がありますか(つまりwww.somesite.com/id= 21424255)をすべてアプリ内に表示します。iPhone SDK:転送されたURLを取得
答えて
短いURLにNSURLRequest
を実行し、応答を得る必要があります。 NSHTTPURLResponse
のサブクラスであるNSURLResponse
とする必要があります。おそらく、301リダイレクトを実行している場合は、応答ヘッダーを読み取り、「Location」ヘッダーからURLを取得できます。
NSDictionary *headers = [myHTTPResponse allHeaderFields];
NSString *redirectLocation = [headers objectForKey:@"Location"];
要求にNSURLConnection
を作成するより詳細な例についてthis質問を見てみましょう。
編集:上記のコードは他のヘッダーフィールドにも当てはまりますが、Adamが次に指摘したように、connection:willSendRequest:redirectResponse:
デリゲートメソッドを使用すると、リダイレクトが自動的に処理されるのでリダイレクト場所をキャプチャする必要があります。
短いURLが完全なURLにリダイレクトされている場合、NSURLConnectionはリダイレクトを透過的に処理します。リダイレクトURLを取得するには、NSURLConnectionデリゲートに
- (NSURLRequest *)connection: (NSURLConnection *)inConnection
willSendRequest: (NSURLRequest *)inRequest
redirectResponse: (NSURLResponse *)inRedirectResponse
を実装する必要があります。リダイレクトのターゲットURLは[inRequest URL]
です。
まず、新しいURL接続を見つける3つの方法があります。(1)NSURLSession(2)NSURLConnection(3)NSURLDownload。私はここでそれを行う方法を説明するためにNSURLConnectionを使用しています。
(1)まず最初は、以下のように.hファイルに2つのプロパティを作成し、最初の(それはhttp://www.google.co.in/?gws_rd=cr&ei=LEfeUvCeA8aLrQew04GICQ 'にリダイレクトされますので、私は、ここに「http://www.google.com」を選んだ)リダイレクトする、.NowをあなたのURLを選択してください。
@interface ConfigViewController()
@property (nonatomic, retain) NSURLRequest *request;
@property (nonatomic, strong, readwrite) NSURLConnection *connection;
@end
(2)次に、.mファイルでプロパティを合成します。
@synthesize request;
@synthesize connection = _connection;
(3)次に、NSURLRequestと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);
}
アサートが、それは、その後はnilになる場合、それはあなたがこのコードを適切に従っていることを確認する必要がありますだけで、その場所にエラーが表示されます、あなたの準備の要求がnilでないことを確認します。
(4)これらの2つの委任を.hファイルに実装します - NSURLConnectionDelegate & NSURLConnectionDataDelegate。
@interface WTViewController : UIViewController <NSURLConnectionDelegate, NSURLConnectionDataDelegate>{
IBOutlet UITextView *txtPreviousLbl;
IBOutlet UITextView *txtNextlbl;
}
(5)次に、これら3つの委任方法を.m(実装)ファイルに実装します。ここで
- (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"]);
}
あなたは[[NSUserDefaults standardUserDefaults] objectForKey: "のserverURL" @]に新しいURLを取得します、あなたはプロジェクト全体でユーザーにNSUserDefaultsまたはNSStringのを使用することができます。 注:このコードはUIViewControllerでのみ実行してください。他のオブジェクトファイルで委任が機能しない可能性があります。 幸せなコードをお持ちです...
- 1. URL転送JSF
- 2. 「loadHTMLString:ベースURL:」iPhone SDK
- 3. ハイライトされたテキストを取得し、URL
- 4. チャンクエンコードされたURLを取得
- 5. S3からクラウドフロントに転送されたホスト名を取得する方法は?
- 6. Get-wineventで転送されたイベントの時刻を取得しますか?
- 7. パーシャルカールビュー - iPhone - データ転送
- 8. iPhoneアプリが「データの大量転送」のために拒否されました
- 9. コンテンツ範囲がPHPで送信されたときのURLデータの取得
- 10. ツイッターでフォーマットされたつぶやきを送信する:iphone sdk
- 11. iPhoneへのUSBデータ転送
- 12. SFTPで転送されたファイル
- 13. Facebook SDK-PHP:接続されたユーザーのUIDを取得する
- 14. iPhone - UIWebview - クリックしたリンクのURLを取得
- 15. wp7に電話のデータ転送を読み取るためのsdkがありますか
- 16. ドロップされた(リンクされた)画像のURLを取得する方法は?
- 17. HttpURLConnectionを使用してリダイレクトされたURLとコンテンツを取得する方法
- 18. URLでエンコードされたJSONを取得する
- 19. PHPでリダイレクトされたページのURLを取得する
- 20. フレームが破棄されたページのURLを取得する
- 21. WP7ナビゲートされたページのURLを取得するWebBrowser
- 22. カスタムエラーページでリクエストされたURLを取得する方法
- 23. イメージURLを取得するリモートにロードされたイメージのファイルサイズ
- 24. WEBVIEWにアップロードされたURLからパラメータを取得します。
- 25. リダイレクトされたURLをpythonで取得する3
- 26. $ .ajaxsetupでリクエストされたajax URLを取得
- 27. SDKを使用してローカルのiPhone番号を取得する
- 28. URLが指定されているときにファイルをダウンロードする - iPhone sdk
- 29. 返信/転送されたLotus Notesメッセージ文書から添付ファイルを取得する方法
- 30. 部分ビューから送信された値を取得する