AFNetworking 2.0:是否可以将纯json放入POST请求的主体中?

Józ*_*sza 6 json http-post ios afnetworking-2

我想从我的应用程序发出以下请求:

AFHTTPRequestOperationManager *requestManager = [[AFHTTPRequestOperationManager alloc] init];
requestManager.responseSerializer.acceptableContentTypes = [requestManager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/json"];
requestManager.requestSerializer = [AFJSONRequestSerializer serializer];
[requestManager POST:urlString parameters:aParameters constructingBodyWithBlock:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
{
    NSLog(@"%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
    NSLog(@"error: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)

其中aParameters是具有以下内容的NSDictionary:

NSDictionary *urlParams = @{@"username" : anUser.userName, @"password" : anUser.password};
Run Code Online (Sandbox Code Playgroud)

当我使用用户输入"anUsername"和"aPassword"从我的应用程序发出请求时,我在servlet中获取了以下日志:

--Boundary+5738A89B2C391231
Content-Disposition: form-data; name="password"

aPassword
--Boundary+5738A89B2C391231
Content-Disposition: form-data; name="username"

anUsername
--Boundary+5738A89B2C391231--

multipart/form-data; boundary=Boundary+5738A89B2C391231
Run Code Online (Sandbox Code Playgroud)

我的印象是使用AFJSONRequestSerializer会以适当的格式发送我的请求,但是正如日志所示,它是多部分/表单数据.解析这种请求真的很难(对我来说)(我在服务器端用Java解析它),所以我的问题是:是否有可能在我的请求正文中发送一个json?像这样的东西:

{
    "userName" : "anUsername",
    "password" : "aPassword"
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Józ*_*sza 5

对于任何有关人员:POST:parameters:constructingBodyWithBlock:success:failure:您应该使用,而不是使用该方法POST:parameters:success:failure:.前者执行多部分表单请求,而后者执行url表单编码.另外,要在JSON中发送params,实例的requestSerializer属性AFHTTPRequestOperationManager应该是一个实例AFJSONRequestSerializer(默认设置为AFHTTPRequestSerializer).浏览实现文件以AFHTTPRequestOperationManager获取详细信息非常有用,它帮助我排除了这个错误.