我刚刚开始使用新的AFNetworking 2.0
API,之前的版本已经使用了一段时间。我正在尝试做一个沼泽标准http POST request
,但遗憾的是我做得不太好。这是我当前的代码:
AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"username" : self.usernameField.text,
@"password" : self.passwordField.text};
[operationManager POST:@"https:URL GOES HERE" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", [responseObject description]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
现在这会返回一个JSON
of(NULL)
并且不会给我一个状态代码之类的404
东西(顺便说一句,我们在使用 AFN 2.0 时如何获得状态代码?)。但是,当我使用像apikitchen.com这样为我测试的网络应用程序尝试这些信息HTTP Post request
时,当我将用户名和密码输入该param
字段时它就可以工作。所以真的我的问题是,为什么不parameters
以与网络应用程序AFN 2.0 parameter property
相同的方式行事?parameters
更一般地说,为什么不post request parameters
为我工作AFN 2.0
?
提前感谢您的帮助,
迈克
编辑:我正在努力实施建议的修复程序。我的 Post 方法现在看起来像这样,但现在对我来说没有意义。
AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"username" : self.usernameField.text,
@"password" : self.passwordField.text};
operationManager.requestSerializer.queryStringSerializationWithBlock =
^NSString*(NSURLRequest *request,
NSDictionary *parameters,
NSError *__autoreleasing *error) {
NSString* encodedParams = form_urlencode_HTTP5_Parameters(parameters);
return encodedParams;
};
[operationManager POST:@"URL HERE" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", [responseObject description]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];