2012-05-21 2 views
0

Я пытаюсь загрузить файл с сервера на Iphone, как этоNSURLConnection получает «False» на загрузку файла

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]; 
    } 
} 

Это всегда работал отлично, но в последнее время я заметили, что он больше не работает. Никаких изменений в файлах, относящихся к этой функции, никаких изменений не произошло. когда я использую один и тот же URL-адрес в веб-браузере, файл загружается отлично, но в моем приложении, когда я запрашиваю файл, он просто возвращает 5 байтов, слово «False», которое я также обнаружил странным, потому что сервер не возвращает слово False, если есть проблема, он возвращает сообщение об ошибке. Код на стороне сервера написан на Visual Basic.

Любые мысли или предложения очень ценятся

ответ

1

False это ключевое слово в Visual Basic, это не является ключевым словом в Objective-C. Также нет причин для того, чтобы он отображался как текст в ответном виде. Это почти наверняка создается серверной стороной.

Используйте прокси-сервер HTTP, такой как Charles, чтобы узнать, какие запросы сделаны вашим веб-браузером и вашим приложением. Между ними будет разница, которая заставляет сервер реагировать по-другому. Используйте инструмент, например cURL, чтобы вручную запрашивать запросы, чтобы определить, какая из причин является причиной. В качестве альтернативы, проверьте журнал фиксации для вашего кода на стороне сервера для последних изменений, которые могут вызвать это.

0

я думаю, что вы пропустили следующие функции обратного вызова, в которой вам нужны для добавления chunck данных в одном объекте NSData: в моем случае _responseText является объектом NSData

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

Надеется, что это поможет out

Смежные вопросы