这是我的两个例子:
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
config.HTTPAdditionalHeaders = ["Accept": "application/json",
"Content-Type": "application/json",
"User-Agent": UIDevice.currentDevice().model]
var request = NSMutableURLRequest(URL: NSURL(string: "http://XXX"))
request.HTTPMethod = "POST"
let valuesToSend = ["key":value, "key2":value]
var error: NSError?
let data = NSJSONSerialization.dataWithJSONObject(valuesToSend, options:NSJSONWritingOptions.PrettyPrinted, error: &error)
request.HTTPBody = data
if error == nil {
let task = NSURLSession(configuration: config).dataTaskWithRequest(request,
completionHandler: {data, response, error in
if error == nil {
println("received == \(NSString(data: data, encoding: NSUTF8StringEncoding))")
}
})
task.resume()
} else {
println("Oups error \(error)")
}
和第二个
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
config.HTTPAdditionalHeaders = ["Accept": "application/json",
"Content-Type": "application/json",
"User-Agent": UIDevice.currentDevice().model]
var request = NSMutableURLRequest(URL: NSURL(string: "http://XXX"))
request.HTTPMethod = "POST"
let valuesToSend = ["key":value, "key2":value]
var error: NSError?
let data = NSJSONSerialization.dataWithJSONObject(valuesToSend, options:NSJSONWritingOptions.PrettyPrinted, error: &error)
if error == nil {
let task = NSURLSession(configuration: config).uploadTaskWithRequest(request, fromData: data,
completionHandler: {data, response, error in
if error == nil {
println("received == \(NSString(data: data, encoding: NSUTF8StringEncoding))")
}
})
task.resume()
} else {
println("Oups error \(error)")
}
所以我想知道:这些两个例子之间有什么不同,对我的情况有什么好处(简单的帖子和接收)
这两个人在背景中没有?那么?
答案 0 :(得分:7)
来自NSURLSession
Class Reference:
dataTaskWithRequest:
根据指定的URL请求对象创建HTTP请求。
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
的参数强>请求
提供特定于请求的信息(如URL)的对象 缓存策略,请求类型和正文数据或正文流。
返回值
新会话数据任务。
<强>讨论强>
创建任务后,必须通过调用其简历启动它 方法
<强>状况强>
适用于iOS 7.0及更高版本。
声明
NSURLSession.h
uploadTaskWithRequest:fromData:
为指定的URL请求对象创建HTTP请求 上传提供的数据对象。
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData
的参数强>请求
NSURLRequest
对象,提供URL,缓存策略,请求 类型,等等。此请求对象中的正文流和正文数据 被忽略了。bodyData
请求的正文数据。
返回值
新会话上传任务。
<强>讨论强>
创建任务后,您必须通过调用
resume
来启动它 方法<强>状况强>
适用于iOS 7.0及更高版本。
声明
NSURLSession.h
另外,Ray Wenderlich说:
<强>
NSURLSessionDataTask
强>此任务发出HTTP GET请求以从服务器下载数据。该 数据以
NSData
的形式返回。然后,您将转换此数据 正确的类型XML
,JSON
,UIImage
,plist
等。NSURLSessionDataTask *jsonData = [session dataTaskWithURL:yourNSURL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // handle NSData }];
<强>
NSURLSessionUploadTask
强>当您需要将某些内容上传到Web服务时,请使用此类 使用
HTTP POST
或PUT
命令。任务的代表也 允许您在传输时观察网络流量。上传图片:
NSData *imageData = UIImageJPEGRepresentation(image, 0.6); NSURLSessionUploadTask *uploadTask = [upLoadSession uploadTaskWithRequest:request fromData:imageData];
此处任务是从会话创建的,图像上传为
NSData
。还有使用文件或流上传的方法。
但是你的问题仍然很模糊,而且范围太广,因为你没有解释明确的具体问题,你可以通过搜索一下来轻松找到这些信息。