AFNectworking 3.0发送请求正文内容

问题描述:

我正在使用AFNetworking与API接口连接的项目。我的问题是如何将请求发送到包含电子邮件,deviceId的正文内容的后端。我发现了许多与AFNetworking 2.0不兼容的解决方案。AFNectworking 3.0发送请求正文内容

现在我正在使用SessionManager,当我初始化请求时,如何添加内容正文上下文?

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:nil]; 
NSString *stringData = [[NSString alloc]initWithData:jsonData encoding:NSASCIIStringEncoding]; 

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil]; 
[manager POST:_urlString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) { 
    NSString *link = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; 
    NSLog(@"JSON: %@",link); 
} failure:^(NSURLSessionTask *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

我试图把电子邮件& DEVICEID成[经理岗位参数:快译通],但它不工作。

有人能告诉我如何添加正文AFNetworking 3.0?谢谢

+0

你最好创建自己的单例,而不是使用AFNetworking的管理器。我发现它的管理器会在发送请求时覆盖你的头文件,而管理器会导致内存泄漏。你可以实现你的经理。 –

+0

@ S.Jin你能举个例子吗?我是新来的IOS&目标C,我不明白, –

+0

@JaniceZhan你可以继承'AFHTTPSessionManager'并创建一个单身人士。像这样:'+(instancetype)sharedManager静态MyManager * manager = nil; static dispatch_once_t pred; dispatch_once(&pred,^ {{self self} initWithBaseURL:[NSURL URLWithString:@“http://baseURL.org/”]]; }); return manager; } '。您也可以在发送请求或init方法中设置标题字段。 –

如果我正确地得到了你的问题它不应该那么辛苦。其类似于2.0版本。

NSDictionary *parameters = @{@"username": _username.text, 
          @"deviceId": deviceIdString, 

          }; 



NSMutableDictionary * parameters = [[NSMutableDictionary alloc]initWithDictionary:params]; 

    NSURL *baseURL = [NSURL URLWithString:@"http://url.com/ws/test.php"]; 

    AFHTTPSessionManager * manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; 
    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

    [manager POST:@"" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { 

     //Response 

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 

     if(error.code==-1001){ 
      //Handle the error 

     } 

    }]; 
+0

嗯。它不工作。结果是零。我在Postman上尝试过相同的请求,并且它工作正常。 –

+0

我把它从工作代码中拉出来很奇怪。 –

+0

你没有得到任何例外权利? –