过去两个项目使用AFNetworking 2.0进行中型项目取得了巨大成功。
这一个电话,但发布用户'登录信息,继续对我失败(服务器说明登录密码和密码不正确,登录是电子邮件,我们在服务器上检查,并且我尝试发送的值相同)
服务器开发人员不处理iOS / ObjC(java / mongoDB人),我给出的是一个URL以及我需要传递的参数Content-Type = application / x-www-form-url -encoded
我在某处读到像@(在电子邮件中)这样的字符可能会导致问题
有没有比我更多经验的人能参与其中吗?我的操作创建方法如下,任何帮助都是值得赞赏的。
-(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;
}
答案 0 :(得分:2)
实际上你用你的代码说你会将url编码的数据发送到你的服务器,但你用自定义数据覆盖了你的请求的postBody。所以你应该用:
创建你的请求NSMutableURLRequest *request=[httpClient requestWithMethod:@"POST" path:nil parameters:loginParameters];
你应该删除以下行:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginParameters options:kNilOptions error:nil];
[request setHTTPBody:jsonData];
我认为上述变化就足够了。