Aym*_*rks 12 post http background-process ios nsurlsession
这是我的两个例子:
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)")
}
Run Code Online (Sandbox Code Playgroud)
和第二个
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)")
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道:这两个例子之间的区别是什么,对我的情况更好(简单的帖子和接收)
这两个在背景中没有?那么?
dataTaskWithRequest:根据指定的URL请求对象创建HTTP请求.
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request参数请求
提供特定于请求的信息的对象,例如URL,缓存策略,请求类型和正文数据或正文流.
回报价值
新的会话数据任务.
讨论
创建任务后,必须通过调用其resume方法启动它.
可用性
适用于iOS 7.0及更高版本.
宣告进入
NSURLSession.h
uploadTaskWithRequest:fromData:为指定的URL请求对象创建HTTP请求,并上载提供的数据对象.
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData参数请求
一
NSURLRequest,提供的网址,缓存策略对象,请求类型,等等.此请求对象中的正文流和正文数据将被忽略.bodyData
请求的正文数据.
回报价值
新会话上传任务.
讨论
创建任务后,必须通过调用其
resume方法启动它.可用性
适用于iOS 7.0及更高版本.
宣告进入
NSURLSession.h
此外,Ray Wenderlich说:
NSURLSessionDataTask此任务发出HTTP GET请求以从服务器下载数据.数据以表格形式返回
NSData.然后,您可以将此数据转换为正确的类型XML,JSON,UIImage,plist,等.Run Code Online (Sandbox Code Playgroud)NSURLSessionDataTask *jsonData = [session dataTaskWithURL:yourNSURL completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // handle NSData }];
NSURLSessionUploadTask当您需要使用
HTTP POST或PUT命令将某些内容上传到Web服务时,请使用此类.任务代表还允许您在传输时监视网络流量.上传图片:
Run Code Online (Sandbox Code Playgroud)NSData *imageData = UIImageJPEGRepresentation(image, 0.6); NSURLSessionUploadTask *uploadTask = [upLoadSession uploadTaskWithRequest:request fromData:imageData];这里的任务是从会话创建的,图像上传为
NSData.还有使用文件或流上传的方法.
但是你的问题仍然很模糊和过于广泛,因为你没有解释一个明确的,具体的问题,你可以通过搜索一点点轻松找到这些信息.