我正在使用AFNetworking
并想上传一个NSData
对象到我的服务器。我试图上传到我们的SOAP服务器,所以我有XML,我已经转换为NSData
对象。出于某种原因,后续不工作:AFNetworking上传进度发送SOAP NSData
// Back to NSData
NSData *convertedFile = [xml dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:siteConfiguration.soapURL];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFormData:convertedFile name:assetCreation.name];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
// Progress
float totalProgress = (float)totalBytesWritten/(float)totalBytesExpectedToWrite;
progress(totalProgress, totalBytesWritten, totalBytesExpectedToWrite);
if (totalBytesExpectedToWrite == totalBytesWritten) {
completion();
}
}];
[operation start];
但不使用multipartFormRequestWithMethod
块时,它的工作和文件正确上传,但没有显示出有进步,回调只是调用一次:
// Back to NSData
NSData *convertedFile = [xml dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:siteConfiguration.soapURL];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod: @"POST"];
[request setHTTPBody:convertedFile];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
// Progress
float totalProgress = (float)totalBytesWritten/(float)totalBytesExpectedToWrite;
progress(totalProgress, totalBytesWritten, totalBytesExpectedToWrite);
if (totalBytesExpectedToWrite == totalBytesWritten) {
MatrixAsset *asset = [[MatrixAsset alloc] init];
completion(asset);
}
}];
[operation start];
看来,我的服务器真的想与我NSData
对象发送HTTPBody
。是否有可能对AFNetworking
进度回调做同样的事情?
你试过'[FORMDATA appendPartWithFileData:convertedFile名称:assetCreation.name];'而不是'[FORMDATA appendPartWithFormData:convertedFile name:assetCreation.name];'? – mkral
另外我会设置'mimeType:'为'text/xml' – mkral
没有一种叫做[formData appendPartWithFileData:convertedFile name:assetCreation.name]的方法,至少不在最新版本的AFNetworking中。我需要将它作为我认为的形式发送,因为它发送给我们的SOAP服务器,并且正在发送其他字段数据。 –