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

问题描述 投票:0回答:1

我正在尝试对 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) 


    }

}];
ios json objective-c nsmutableurlrequest
1个回答
0
投票

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

你最好先建立一个字典,然后使用

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,这是一个第 3 方库(可在 Github 上找到),它可以为您完成网络和 JSON 序列化。

© www.soinside.com 2019 - 2024. All rights reserved.