0

短縮URLから音声ファイルをダウンロードしたい( のようなwww.adjix.com) 通常のリンクからやってみるとOKなのですが、短縮URLからだとリダイレクトしてからダウンロードする方法

コードのこの部分を使用してリクエストを作成します。

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlToSound]];

NSURLConnection *theConnection =[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if (theConnection) {
    self.receiveData = [[NSMutableData data] retain];
}

そして、ヘッダーを表示するこのコード:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    [receiveData setLength:0];

    if ([response isKindOfClass:[NSHTTPURLResponse self]]  ) {
        NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields];
        NSLog(@"headers: %@", headers);
   }
}

直接ダウンロードしようとすると、MP3 ヘッダーへのリンクは次のとおりです。

    "Accept-Ranges" = bytes;
    Connection = "Keep-Alive";
    "Content-Length" = 21316;
    "Content-Type" = "audio/mpeg";
    Date = "Sat, 07 Feb 2009 16:01:34 GMT";
    Etag = "\"2d810-5344-7dda240\"";
    "Keep-Alive" = "timeout=15, max=100";
    "Last-Modified" = "Sat, 25 Jun 2005 12:26:41 GMT";
    Server = Apache;

短い URL ( adjix.com/3na3) でファイルをダウンロードしようとすると、ヘッダーは次のようになります。

    "Cache-Control" = "max-age=60";
    Connection = close;
    "Content-Length" = 692;
    "Content-Type" = "text/html";
    Date = "Sat, 07 Feb 2009 19:18:23 GMT";
    Expires = "Sat, 07 Feb 2009 19:19:23 GMT";
    Server = "Apache/1.3.41 (Darwin) mod_ssl/2.8.31 OpenSSL/0.9.7l";
4

3 に答える 3

0

より多くの情報を提供できますか?特に、HTTPリクエストを実行するために使用しているクラスと、リダイレクトされたURLを使用したときに何が壊れるかについて言及するとよいでしょう。

于 2009-02-07T19:00:05.890 に答える
0

Google Toolbox for Macの一部である GTMHTTPFetcher クラスを試すことをお勧めします。リダイレクトを処理します。

于 2009-02-08T00:42:14.530 に答える
0

NSURLConnection には、特にリダイレクトを処理するために実装できるデリゲート メソッドがあります。ただし、リクエストのユーザー エージェント文字列が原因で、接続先のサーバーの動作が異なる可能性があります。

于 2009-02-11T13:48:52.477 に答える