在 NSMutableRequest 的正文中发送 JSON 格式的 NSDate

Posted

技术标签:

【中文标题】在 NSMutableRequest 的正文中发送 JSON 格式的 NSDate【英文标题】:Sending NSDate in JSON format in the body of NSMutableRequest 【发布时间】:2015-09-09 23:30:56 【问题描述】:

我正在尝试对 Web 服务进行 API 调用,您必须在其中发送请求正文中的日期才能获取所需的数据。我已经完成了 API 调用,但没有在请求正文中发送任何 JSON。我最好的猜测是你必须使用 NSMutableURLRequest。请参阅下面的尝试。当我这样做时,我不断收到来自 Web 服务的错​​误。

任何帮助将不胜感激。谢谢!

//1. Create a NSURL 
NSURL *url = [NSURL URLWithString:apiString];

//2. Create NSMutableRequest.
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

NSString *json = @"requestDate: '2015-09-01'";

   [request setHTTPBody:[json dataUsingEncoding:NSUTF8StringEncoding]];

//3. get data
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) 



    if (data != nil) 


        [self processData:data];

    else

        NSLog(@"%@," connectionError.localdescription) 


    

];

【问题讨论】:

【参考方案1】:

是的,这可行,但它是硬编码且容易出错。

你最好设置一个字典,然后使用NSJSONSerialization(它有一个方法dataWithJSONObject,它接受一个“JSON对象”一个可以转换为JSON的对象并返回格式良好的JSON 数据)。

因此,您创建 JSON 数据的代码如下所示:

let dateFormatter = NSDateFormatter() //create a date formatter.
let dateString = dateFormatter.stringFromDate(dateToSend)
let dictionary = ["requestDate": dateString];
var error: NSError
let theJSONData NSJSONSerialization.dataWithJSONObject(
  dictionary,
  options: .PrettyPrinted,
  error: &error
)

您也可以使用 AlamoFire,这是一个 3rd 方库(可在 Github 上获得),它可以为您完成网络和 JSON 序列化。

【讨论】:

以上是关于在 NSMutableRequest 的正文中发送 JSON 格式的 NSDate的主要内容,如果未能解决你的问题,请参考以下文章

HTTPBody 中的 NSMutableRequest 数组和字典,服务器响应

NSMutableRequest 和 NSURLConnection 的最大超时时间

如何使用 NSURLConnection (NSMutableRequest) 超时

无法使用类型的参数列表调用“dataTask”(使用:NSMutableRequest,...)

对 NSMutableRequest 的 PHP Json 请求!帮助?

是否可以在 Axios 中发送带有 JSON 正文的 get 请求?