在过去的两个项目中一直使用AFNetworking 2.0,为一个中型项目取得了巨大的成功。
不过,这一个调用,发布用户的登录信息,一直失败(服务器状态不正确的登录名和密码,登录是电子邮件,我们已经检查了服务器,并且值与我尝试发送的值相同)
服务器开发人员不处理iOS/ObjC(java/mongoDB家伙),我给出的只是一个URL和我需要传递的参数 内容类型= application/x-www-form-url-encode-
我在某处读到@(在电子邮件中)等字符可能会导致问题
这里有比我更有经验的人吗? 我的操作创建方法如下,非常感谢任何帮助。
-(AFHTTPRequestOperation *)loginUserWithParameters:(NSDictionary *)loginParameters
{
/*
parameters dictionary:
email
psw
deviceToken
*/
NSString *url=SERVER_USER_LOGIN;
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:url]];
// [httpClient setParameterEncoding:AFFormURLParameterEncoding];
NSMutableURLRequest *request=[httpClient requestWithMethod:@"POST" path:nil parameters:nil];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginParameters options:kNilOptions error:nil];
[request setHTTPBody:jsonData];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[AFNetworkActivityIndicatorManager sharedManager].enabled=YES;
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];
return operation;
}
实际上,您用代码说要将 url 编码的数据发送到服务器,但您正在用自定义数据覆盖请求的 postBody。因此,您应该使用以下方法创建请求:
NSMutableURLRequest *request=[httpClient requestWithMethod:@"POST" path:nil parameters:loginParameters];
您应该删除以下行:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginParameters options:kNilOptions error:nil];
[request setHTTPBody:jsonData];
我认为上述更改就足够了。