在过去的两个中型项目中使用 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;
}
最佳答案
实际上你用你的代码说你将发送 url 编码的数据到你的服务器,但是你正在用自定义数据覆盖你的请求的 postBody。所以你应该创建你的请求:
NSMutableURLRequest *request=[httpClient requestWithMethod:@"POST" path:nil parameters:loginParameters];
你应该删除下面几行:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginParameters options:kNilOptions error:nil];
[request setHTTPBody:jsonData];
我认为以上更改就足够了。
关于ios - AFNetworking 2.0/AFHTTPRequestOperation 应用程序/x-www-form-urlencoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886698/