【发布时间】:2016-01-04 08:59:10
【问题描述】:
我想使用AFNetworking 发布表单数据。我正在使用这段代码来实现这一点:
// Create service request url
NSString *urlString = [NSString stringWithFormat:@"%@%@", kBaseURL, webServiceAPIName];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setValue:@"myUser" forHTTPHeaderField:@"X-User-Agent"];
[manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
// Set calling keys
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"5341" forKey:@"Id"];
[dict setObject:@"f1" forKey:@"refDataId"];
[dict setObject:@"f1" forKey:@"customRefDataId"];
[dict setObject:@"587" forKey:@"cost"];
[manager POST:urlString parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:UIImagePNGRepresentation(files[0]) name:@"ImageName" fileName:@"file1" mimeType:@"image/png"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"upload successful");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error image upload");
}];
在等待一段时间后执行此块后,它会进入失败部分。日志记录:"Error image upload"。没有给出任何错误。
我在POSTMAN API CLIENT 中尝试了我的 API,它工作正常。我能够发送数据并获得回复。
运行此块后,我无法运行任何其他 API 调用,我必须停止我的应用并再次运行才能运行任何其他 API 调用。
这段代码有什么问题,为什么我无法上传任何表单数据以及为什么它会阻止我的任何其他 API 调用
【问题讨论】:
-
您使用的是最新版本的框架吗?
NSError *error在故障块中绝对为零吗?在您的appendPartWithFileData:调用中,出于测试目的,我将取出那行代码并检查NSData对象是否也不为零。 -
@Luke 这是我在 NSError
*error中遇到的错误 -
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0x7fde1ae09790 {NSUnderlyingError=0x7fde1af158d0 "The request timed out.", NSErrorFailingURLStringKey=apikey, NSErrorFailingURLKey=apikey, NSLocalizedDescription=The request timed out.} -
这是在模拟器中吗?如果是这样,这里可能存在重复问题:stackoverflow.com/questions/26972822/… 另外,请检查您当前是否没有在您的 Mac 上运行 Network Link Conditioner 应用程序 - 如果您不知道这是什么,请不要担心;)
标签: ios objective-c xcode api afnetworking