我正在尝试使用x-www-form-urlencoded正文发布数据.
通过邮递员发帖,没关系
通过邮递员发帖,没关系
但是我不能通过afnetworking来做到这一点.这是我的代码
NSDictionary *parameters = @{@"login" : email,@"password": password}; NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; self.requestSerializer = [AFJSONRequestSerializer serializer]; NSString *urlString = [NSString stringWithFormat:@"%@/%@",HTTPBaseRequestURL,appendLoginUrl]; NSLog(@"URL %@\njsonString %@",urlString,jsonString); [self POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { [formData appendPartWithFormData:jsonData name:@"data"]; } progress:nil success:^(NSURLSessionDataTask * _Nonnull task,id _Nullable responseObject) { onSuccess(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task,NSError * _Nonnull error) { NSString *errorDescription = [NSError serverErrorMessageFromData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey]]; NSInteger statusCode = [NSHTTPURLResponse errorCode:(NSHTTPURLResponse*)task.response]; NetworkRequestError *requestError = [[NetworkRequestError alloc] initWithType: (NSHTTPURLResponse*)task.response ? NetworkRequestErrorTypeServerError : NetworkRequestErrorTypeNoConnection description: (NSHTTPURLResponse*)task.response ? errorDescription : nil]; requestError.statusCode = statusCode; NSLog(@"Error from server: %@,status code = %ld,error type = %lu",requestError.errorDescription,(long)requestError.statusCode,(unsigned long)requestError.type); onFailure(requestError); }];
请帮助我理解如何正确地做到这一点.谢谢!
解决方法
评论后我终于找到了答案.这是我现在正常运行的请求,请注意添加
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
这是完整的代码:
NSString *url = [NSString stringWithFormat:@"%@%@",APIBASE,APIUSERENDPOINT]; NSDictionary* parametersDictionary = [NSDictionary dictionaryWithObjectsAndKeys: username,@"username",password,@"password",nil ]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; [manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; [manager POST:url parameters:parametersDictionary progress:nil success:^(NSURLSessionDataTask * _Nonnull task,id _Nullable responseObject) { NSLog(@"%@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task,NSError * _Nonnull error) { NSLog(@"%@",error); }];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。