1

在过去的两个项目中一直使用 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;
}
4

1 回答 1

2

实际上,您使用代码说您将发送 url 编码的数据到您的服务器,但是您正在使用自定义数据覆盖您的请求的 postBody。因此,您应该使用以下命令创建您的请求:

NSMutableURLRequest *request=[httpClient requestWithMethod:@"POST" path:nil parameters:loginParameters];

你应该删除以下行:

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:loginParameters options:kNilOptions error:nil];
[request setHTTPBody:jsonData];

我认为以上的变化就足够了。

于 2014-04-05T22:08:39.160 回答