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

标签 ios post http-post afnetworking-3

我正在尝试使用 x-www-form-urlencoded 正文发布数据。 通过 postman 投递,没问题 Posting via postman, it is ok

但我不能通过 afnetworking 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);
}];

请帮助我了解如何正确执行此操作。谢谢!

最佳答案

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

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

关于ios - AFNetworking 3 x-www-form-urlencoded 发布数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35239506/

相关文章:

android - 在错误地创建应用程序而不是库后,像在 iOS 中一样在 Android Studio 中创建目标

ios - 如何在单个 UILabel 文本上获取两个普通字符串和 NSMutableString?

asp.net-core - 通过 swagger/postman 以字符串形式发布到 Web api 路径获取 null

java - 消息: HTTP method POST is not supported by this URL

c# - 创建对象与直接从数据库中选择

iOS - 如何创建永无止境的滚动新闻提要

iphone - 如何在 Objective-C 中的 Web 服务调用中将文件作为参数传递?

php - 在 php 中选择查询 mysql 后运行更新或插入查询

java - 无法使用 jSoup 发布

javascript - jQuery ajax 发布数据以形成邮件