我正在尝试对 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)
}
}];
是的,这可行,但它是硬编码的并且容易出错。
你最好先建立一个字典,然后使用
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 序列化。