AFNetworking 2.0 / AFHTTPRequestOperation application/x-www-



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

我认为上述更改就足够了。

相关内容

  • 没有找到相关文章

最新更新