3

サーバー (aspx) から html 応答を取得しようとしています。

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.someSiteThatRedirectsWithGetParameters.com?parameter1=1&parameter2=2"];

NSURL *url = [ NSURL URLWithString:urlstr];     
NSMutableURLRequest *urlRequest = [ NSURLRequest requestWithURL: url];

NSData data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

NSURL *lastURL=[response URL];

NSLog(@"Last url %@", lastURL);

www.someSiteThatRedirectsWithGetParameters.com として lastURL を取得しているため、元の要求された URL の html ページを取得できません。

これはなぜですか、どうすれば解決できますか?

編集

これは私がこれまでに試したことのすべてです: iOS 5 で最後にリダイレクトされた URL を取得しますか? しかし、私がしようとしていることをまだ達成できません: URLにパラメーターを持つ元のGETリクエスト(リダイレクトを通過)のhtmlページソースを取得しますか?

4

2 に答える 2

1

www.someSiteThatRedirectsWithGetParameters.com として lastURL を取得しているため、元の要求された URL の html ページを取得できません。

リクエストがリダイレクトされている場合は、接続先のサーバーが、最初にリクエストした URL にはページがなく、代わりにリダイレクトされた URL を使用する必要があると通知しているためです。それがリダイレクト応答の要点です。

取得した応答がHTTP 303の場合、新しい要求は POST から GET に適切に変更されます。これは、ページを更新すると元のリクエストが再送信されて望ましくない結果になることを避けるために行われることがあります。この場合、リクエストを何らかの URL に POST すると、サーバーはリクエストを受け入れますが、最終的にサーバーのレスポンスを表示する別の URL にクライアントをリダイレクトすることで応答します。

これはなぜですか、どうすれば解決できますか?

上記の「理由」を説明しました。「解決策」は、サーバーからの応答を受け入れ、サーバーの応答を含む URL へのリダイレクトをたどることです。

于 2012-05-14T07:18:15.953 に答える
0

2 つのリクエストを送信するアプローチを試してみます。最初のリクエストを送信すると、redirectURL がレスポンスになります。次に、応答の新しい URL を作成し、GET パラメータを使用してその URL に要求を送信します。試したことはありませんが、うまくいくと思います。

于 2012-05-11T12:09:08.787 に答える