AFNetworking 3 x-www-form-urlencoded发布数据

我想用x-www-form-urlencoded正文发布数据。 通过邮递员发送,没关系 通过邮递员发送,没关系

但我不能通过networking传播3。这是我的代码

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); }]; 

请帮助我了解如何正确地做到这一点。 谢谢!

在评论之后,我终于find了答案。 这是我现在正确运行的请求,请注意添加

 [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); }]; 

尝试附加自定义标题信息,例如:

 [self.requestSerializer setValue:@" application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type]; 

希望它对你有所帮助。

这里 。 它与我合作。 太简单 。

  NSDictionary* parametersDictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"deviceTokenIOS", @"db487c983ebbe7c2fb066d292bb4318175f54ab27b6b9df7871907e1d0ed62ba", @"message", @"Hello Dunglt", nil ]; NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"db487c983ebbe7c2fb066d292bb4318175f54ab27b6b9df7871907e1d0ed62ba", @"deviceTokenIOS", @"Hello Dunglt", @"message", nil]; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; [manager POST:[NSURL URLWithString:url].absoluteString parameters:dict progress:nil success:^(NSURLSessionTask *task, id responseObject) { NSLog(@"%@", responseObject); } failure:^(NSURLSessionTask *operation, NSError *error) { NSLog(@"Error: %@", error); }];}