iOS AFNetworking post 请求 returns 请求失败:请求错误 (400)
iOS AFNetworking post request returns Request failed: bad request (400)
我正在使用 AFNetworking 调用 post 网络服务,但每次我都收到响应
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)"
这是我的代码
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [self.responseSerializer.acceptableContentTypes setByAddingObject:@"application/json"];
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setObject:self.APIClientID forKey:@"client_id"];
[parameters setObject:self.APIClientSecret forKey:@"client_secret"];
[parameters setObject:self.APIGrantType forKey:@"grant_type"];
[manager POST:self.requestURL
parameters:parameters
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
success(task, responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failure(task, error);
}];
它适用于 postman。
另外,我找到了很多类似错误的答案,但没有解决任何问题。
您正在使用 AFJSONRequestSerializer
序列化您的请求。这将创建一个 JSON 负载,而不是一个 url 编码的表单请求。
请尝试使用 AFHTTPRequestSerializer
。
有关详细信息,请参阅文档 here。
您也可以删除以下代码行,正确的请求序列化程序将为您处理:
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
我正在使用 AFNetworking 调用 post 网络服务,但每次我都收到响应
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)"
这是我的代码
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [self.responseSerializer.acceptableContentTypes setByAddingObject:@"application/json"];
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setObject:self.APIClientID forKey:@"client_id"];
[parameters setObject:self.APIClientSecret forKey:@"client_secret"];
[parameters setObject:self.APIGrantType forKey:@"grant_type"];
[manager POST:self.requestURL
parameters:parameters
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
success(task, responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
failure(task, error);
}];
它适用于 postman。
您正在使用 AFJSONRequestSerializer
序列化您的请求。这将创建一个 JSON 负载,而不是一个 url 编码的表单请求。
请尝试使用 AFHTTPRequestSerializer
。
有关详细信息,请参阅文档 here。
您也可以删除以下代码行,正确的请求序列化程序将为您处理:
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];