0

このようなサーバーからiPhoneにファイルをダウンロードしようとしています

NSURL *newURL0 = [NSURL URLWithString: url]; 
NSMutableURLRequest *req0 = [NSMutableURLRequest requestWithURL:newURL0];
NSURLConnection conn = [[NSURLConnection alloc] initWithRequest:req0 delegate:self];

その後

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSURL *docDirectory = [[[NSFileManager defaultManager] URLsForDirectory:
                            NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

    NSURL *filePath = [docDirectory URLByAppendingPathComponent:temp];

    [webData writeToURL:filePath atomically:YES];
    [webData release];

    connection = nil ; 

    if ([delegate respondsToSelector:@selector(getDataSucceeded:)]) {

        NSLog(@"Log: %@", @"yes");
        [delegate getDataSucceeded:self.list];
    }
}

これは常に完璧に機能していましたが、最近、機能しなくなったことに気づきました。この機能に関連するファイルは変更されておらず、機能しなくなっただけです。Webブラウザーで同じURLを使用すると、ファイルは正常にダウンロードされますが、アプリでファイルを要求すると、5バイトが返されます。これも、サーバーがFalseという単語を返さないため、「False」という単語が奇妙であることがわかりました。問題がある場合は、エラーメッセージを返します。サーバー側のコードはVisualBasicで記述されています。

どんな考えや提案も大歓迎です

4

2 に答える 2

1

FalseVisual Basicのキーワードであり、Objective-Cのキーワードではありません。また、そのような応答でテキストとして表示される理由もありません。ほぼ確実にサーバー側で生成されています。

CharlesなどのHTTPプロキシを使用して、Webブラウザおよびアプリケーションによって行われる要求を確認します。それらの間には違いがあり、サーバーが異なる方法で応答する原因になります。cURLなどのツールを使用して手動でリクエストを行い、どの違いが原因であるかを判断します。または、サーバー側コードのコミットログで、これを引き起こす可能性のある最近の変更を確認してください。

于 2012-05-21T19:35:04.427 に答える
0

単一のNSDataオブジェクトにデータのチャンクを追加する必要がある次のコールバック関数を見逃したと思います。私の場合、_responseTextはNSDataオブジェクトです。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
  [_responseText appendData:data];
}

これがあなたを助けることを願っています

于 2012-05-21T20:25:16.023 に答える