2

誰かが私がURLをリクエストしたときに最後にリダイレクトされたURL(n番目)を取得できる最も単純なコードを投稿できますか?

非同期リクエストを使用する必要があることはわかっていますが、問題を解決する完全に機能するコードを作成することはできません。

私はios5を使用しているので、ios5に追加された最新の非同期組み込み機能を使用できます。

私はたくさんのことを試みましたが、まだ成功していません。以下のコードを使用して、パラメーターを使用してgetリクエストを送信しようとしていますが、サイトのリダイレクトが原因でこれらのパラメーターが失われています:(!

NSURLRequest *request = [NSURLRequest requestWithURL:urlOriginal];

[NSURLConnection 
sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
{
    NSLog("the returned data should be the final data of the redirected url with parameters but it is not");
}];

}

編集

だからこれは私が今やったことです:

NSURLRequest *requestOriginal = [NSURLRequest requestWithURL:urlOriginal];

 NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:requestOriginal delegate:self];

[connection start];

と委任:

-(NSURLRequest *)connection:(NSURLConnection *)connection
        willSendRequest:(NSURLRequest *)request
       redirectResponse:(NSURLResponse *)redirectResponse
{

    if (redirectResponse) {
    NSMutableURLRequest *r = [request mutableCopy]; // original request
    [r setURL: [request URL]];
    return r;
} else {
     NSLog(@"redirecting to : %@", [request URL]);
    return request;
}
}

ログには、最初に渡されたgetパラメーターとともに必要な正しいリクエストURLが表示されます。

このリクエストからデータを取得するにはどうすればよいですか?別のcompletionHandlerデリゲートメソッド?

edit2:

さて、他のデルゲートも実装しました:

  • (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

  • (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

  • (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

  • (void)connectionDidFinishLoading:(NSURLConnection *)connection

4

2 に答える 2

1

ドキュメントのリダイレクトおよびその他のリクエストの変更の処理をお読みください。簡単に言うと、a)接続のデリゲートを提供し、b)そのconnection:willSendRequest:redirectResponse:デリゲートにメソッドを実装する必要があります。質問で何をしようとしているのか正確にはわかりません。接続のリダイレクト先のURLからのデータが必要ですか、それともリダイレクトされたリクエストを表示しますか?いずれにせよ、上記の方法を実装すると役立つはずです。デリゲートはリダイレクトされたリクエストを見ることができ、それを変更せずに返すと、接続で新しいURLが読み込まれるはずです。

于 2012-05-14T05:29:07.150 に答える
0

これは、NSMutableURLRequestを使用して実現できます。私はこれらの手順を実行しました、それは私にとってうまく機能しています。下記のリンクをご覧ください。

URL:ここをクリック:最終的にリダイレクトされたURLを取得します

PS:さらにサポートが必要な場合はお知らせください。

于 2020-01-09T09:16:17.640 に答える