4

Я хочу загрузить видео в веб-службу вместе с некоторыми другими параметрами. Я хочу загрузить userID, videoID и видео к веб-сервису. При загрузке все параметры, отличные от видео, отправляются на веб-службу. Я проверил в конце веб-службы, и видео не идет с запросом. Я использую следующий код.AFNetworking - Загрузите видео вместе с другими параметрами

- (void)uploadVideoAtLocalPath:(NSString *)videoPath videoID:(NSString *)videoID userID:(NSString *)userID { 

    NSString *strServerURL = @"www.mysite.com/user/uploadVideo"; 
    NSURL *URL = [NSURL URLWithString:strServerURL]; 
    AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:URL]; 

    NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 

     // userID 
     NSData *userIDData = [userID dataUsingEncoding:NSUTF8StringEncoding]; 
     [formData appendPartWithFormData:userIDData name:@"userID"]; 

     // videoID 
     NSData *videoIDData = [videoID dataUsingEncoding:NSUTF8StringEncoding]; 
     [formData appendPartWithFormData:videoIDData name:@"videoID"]; 

     // video 
     NSData *videoData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:videoPath]]; 
     [formData appendPartWithFileData:videoData name:@"video" fileName:@"video.mov" mimeType:@"video/quicktime"]; 
    }]; 

    [request setURL:URL]; 
    [request setTimeoutInterval:60.0]; 
    [request setHTTPMethod:@"POST"]; 

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    [AFHTTPRequestOperation addAcceptableStatusCodes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(100, 500)]]; 
    [operation setCompletionBlockWithSuccess: ^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"Response String: %@", operation.responseString); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Failure: %@", error); 
    }]; 

    [client enqueueHTTPRequestOperation:operation]; 
} 

Может ли кто-нибудь сообщить мне, правильно ли я делаю это? Если нет, можете ли кто-нибудь рассказать мне, как загружать видео в веб-сервис вместе с другими параметрами?

Спасибо всем!

+0

Вы проверили, нет ли «видеоданных»? –

+0

Можете ли вы попытаться включить идентификатор userID и videoID в NSDictionary и поместить его внутри параметров в метод multipartFormRequestWithMethod вместо того, чтобы положить nil? –

+0

@AttilaH: Привет, videoData не ноль. Я проверил его. Благодарю. – EmptyStack

ответ

1

Я плохо разбираюсь в этом методе. Я была такая же проблема. Но, я исправил его как смешение POST & GET методов. Я только что отправил мои параметры как GET метод, как показано ниже -

NSString * strServerURL = [NSString stringWithFormat: @ "www.mysite.com/user/uploadVideo & USERID =% г & VideoID =% D", 1, 55];

и отправил мой видеоданные в POST метода в соответствии с вашим способом -

NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 

    // video 
    NSData *videoData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:videoPath]]; 
    [formData appendPartWithFileData:videoData name:@"video" fileName:@"video.mov" mimeType:@"video/quicktime"]; 
}]; 

Лучше попытаться изменить свой веб-сервис и попробовать, как в предыдущем пункте. Он должен работать.

Cheers!

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