【问题标题】:AFNetworking - POST Method with JSON parameter: var = {JSON}AFNetworking - 带有 JSON 参数的 POST 方法:var = {JSON}
【发布时间】:2013-03-13 05:27:22
【问题描述】:

我正在使用接受这样的 POST 方法的网络服务

键 d ;值 {JSON 请求}

例如(登录):

d={ "action": [ "login" ], "request_data": { "login": { "user": "用户", "密码": "密码" } } }

如果我使用 AFHTTPClient,服务器找不到任何“d”参数。我尝试使用所有参数创建字典,通过 NSJSONSERIALIZE 序列化,然后将所有内容包装在 NSMutabliDictionary *parmas 中,键值对@“d”,参数传递给 [httpClient postPath[....] ] 但没有成功. 我该怎么办?

【问题讨论】:

    标签: ios json post parameters afnetworking


    【解决方案1】:
    NSString *jsonString  = @"YourStringFromServer";
    NSDictionary *temDic = [jsonString JSONValue]; // convert string Value to JSON and add it to Dictionary.
    NSlog(@"%@",temDic);// set specific key for specific value.
    

    【讨论】:

      【解决方案2】:

      它正在寻找一个 JSON 字符串。我在理解您问题中的最后几句话时遇到了一些麻烦(您没有非常清楚地描述这些步骤),但基本上:

      //Create your params
      NSDictionary *parametersDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                                          yourData, @"action",
                                                                          someMoreData, @"request_data", nil];
      
      NSString *parametersJSONString = [parametersDictionary JSONString];
      
      NSDictionary *parametersToSend = [NSDictionary dictionaryWithObject:parametersJSONString forKey:@"d"];
      

      你应该很高兴。请注意,JSONString 需要 JSONKit。此外,在发送之前调试/记录parametersToSend,以确保您获得了正确的数据并且问题不在其他地方。

      【讨论】:

      • 不,我总是从服务器获取缺少的参数,但如果我用相同的字典构建一个 NSURLRequest,它就可以工作。 AFHTTPClient 和 postPath 方法出了点问题。所以我构建了一个 NSURLRequest 并用它分配了一个 AFHTTPRequestOperation。
      • 您是在构建NSURLRequest 对象还是NSMutableURLRequest 对象?