【发布时间】:2015-06-13 11:18:21
【问题描述】:
我是使用 AFNetworking 的新手,调用 API 时缺少一些东西。
这是代码(大部分是 AF* 示例):
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
AFJSONRequestSerializer *reqSerializer = [AFJSONRequestSerializer serializer];
[reqSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[reqSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = reqSerializer;
AFJSONResponseSerializer *resSerializer = [AFJSONResponseSerializer serializer];
[resSerializer setReadingOptions:NSJSONReadingAllowFragments | NSJSONReadingMutableContainers];
resSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/json", nil];
manager.responseSerializer = resSerializer;
NSString *URLString =[NSString stringWithFormat:@"%@/users/userLogin", BaseURLString];
NSDictionary *params = @{
@"userName": self.txtUser.text,
@"passWord": self.txtPass.text
};
[manager POST:URLString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
按 URL 调用代码是: http://localhost:8000/users/userLogin
但具有正确参数的应该是: http://localhost:8000/users/userLogin/JOHN/MYPASS
最后我收到“请求失败:未找到 (404)”
测试 AFNetworking 的肮脏解决方法:
NSString *URLString = [NSString stringWithFormat:@"%@/users/userLogin/%@/%@", BaseURLString, self.txtUser.text, self.txtPass.text];
它奏效了:p
知道有什么问题吗?
感谢您的帮助!
【问题讨论】:
-
参数未按照您在此处指定的方式传递,en.wikipedia.org/wiki/Query_string
-
你的服务器代码是什么样的?
-
例如,它是一个 JSON API: $app->post('/userLogin/:userName/:passWord', function($userName, $passWord) { userLogin($userName, $passWord) ; });
-
如果是这种情况,那么 AFNetworking 正在做正确的事情。 localhost 不会在设备上存在,您使用的是模拟器,网站是否在您的 Mac 上运行?
-
没错,我正在使用模拟器。问题是 url 格式,服务器正在获取没有参数的 baseurl
标签: ios json xcode afnetworking afnetworking-2