Загрузка файла с помощью POST с помощью AFNetworking

Итак, я пытаюсь загрузить файл XML на сервер с помощью POST, используя AFNetworking.
Итак, используя пример кода с их сайта, я настроил это. Когда он запускается, что-то загружается на сервер (или, по крайней мере, покидает мой компьютер). Я могу отслеживать загрузку, когда загрузка завершена, сервер распознает, что она завершена, и переходит к загрузке файла, но загружает старый XML. Итак, он правильно подключается к серверу, но я не уверен, почему загрузка файла не работает правильно. Кроме того, я просто хочу отправить файл, серверу не нужны никакие заголовки или параметры и т. д.
Итак, мне интересно, правильно ли я сохранил данные? Или если я не отправляю сервер должным образом или что? Любые предложения были бы полезны

NSData *iTunesXMLData = [NSData dataWithContentsOfFile:filePath];

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

  /* NSMutableURLRequest *request =[httpClientmultipartFormRequestWithMethod:@"POST"     
path:@"/upload.php?id=5" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData:iTunesXMLData name:@"iTunes Music Library" fileName:@"iTunes Music Library.xml" mimeType:@"application/xml"];
}];*/

//I tried this way also, both did the same thing

NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload.php?id=5" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFormData:iTunesXMLData name:@"iTunes Music Library"];
}];`

 AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];`

NSLog(@"Operation: %@", operation);
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];

person urbanrider    schedule 16.11.2012    source источник


Ответы (1)


Вы пытались поймать успех/неудачу операции? Попробуйте это после setUploadProgressBlock:

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    // Operation ended successfully
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // Something happened! 
    NSLog(@"ERROR: %@, %@", operation, error);
    // Here you can catch operation.responseString to see the response of your server
}];

Это простой способ узнать, что вернул ваш сервер. Если что-то загружается на ваш сервер, дважды проверьте, что вы получаете правильный файл. Насколько я знаю, с вашей AFNetwork все в порядке.

person amb    schedule 26.11.2012
comment
Спасибо за предложение, я действительно добавил это некоторое время назад, и это помогло мне диагностировать проблему. Сервер php хотел файл с определенным именем файла. - person urbanrider; 26.11.2012