【问题标题】:AFNetworking 2.0 / AFHTTPRequestOperation application/x-www-form-urlencodedAFNetworking 2.0 / AFHTTPRequestOperation 应用程序/x-www-form-urlencoded
【发布时间】:2014-04-05 20:56:43
【问题描述】:

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

【问题讨论】:

    标签: ios iphone http-headers afnetworking-2 afhttprequestoperation


    【解决方案1】:

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

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

    你应该删除以下行:

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

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

    【讨论】:

    • 谢谢伊斯梅尔! +1000 给你!过去一天一直在为此苦苦挣扎,该函数的代码实际上是从一个非常相似的函数中复制的,所以我想这就是我从复制/粘贴代码中得到的结果
    • @dhomes 不客气,几乎每个人都从复制/粘贴中得到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2016-09-07
    • 1970-01-01
    • 2018-10-19
    • 2014-05-19
    相关资源
    最近更新 更多