owl*_*ipe 11 httprequest swift swift3
我是Swift的新手,我正在尝试发出HTTP请求.我尝试了Stack Overflow问题中的许多想法,但是在操场上运行时都会导致错误; 我相信这是因为他们都在Swift 1.0-2.0中.
如何在Swift 3中发出HTTP请求?
更新我尝试了这个答案中提出的第一个解决方案,在完成Xcode的建议"Fix-it"后,我遇到了四个错误:
Cod*_*ent 40
您的代码有几个问题:
Info.plist文件中进行异常才能连接到HTTP站点.dataTask(urlwith: ! as URL).你想用感叹号(!)解开什么?什么是变量名称?许多类名在Swift 2和3之间发生了变化,因此您找到的答案可能不适用.以下示例连接到httpbin.org以获取您的IP地址:
import PlaygroundSupport
import Foundation
let url = URL(string: "https://httpbin.org/ip")
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
guard error == nil else {
print(error!)
return
}
guard let data = data else {
print("Data is empty")
return
}
let json = try! JSONSerialization.jsonObject(with: data, options: [])
print(json)
}
task.resume()
PlaygroundPage.current.needsIndefiniteExecution = true
Run Code Online (Sandbox Code Playgroud)
aya*_*aio 14
您的代码中存在拼写错误(调用中没有url变量).
无论如何,在Swift 3中,最好使用新的URL结构和URLSession类.
此外,XCPlayground现在是PlaygroundSupport.
当String可用时,不需要使用NSString.
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
let url = URL(string: "http://stackoverflow.com/")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if let data = data,
html = String(data: data, encoding: String.Encoding.utf8) {
print(html)
}
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
注意:这是针对Xcode 8 beta 2.在beta 1上你必须做shared()而不是shared.如果你在iOS不要忘了import UIKit,但是这个代码也适用于OS X,如果你import Cocoa不是.
在你的错误中,似乎url缺失.这是简单的api电话,以帮助你开始.
import UIKit
import Foundation
import PlaygroundSupport
let url:URL = URL(string: "http://jsonplaceholder.typicode.com/posts")!
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let paramString = "data=Hello"
request.httpBody = paramString.data(using: String.Encoding.utf8)
let task = session.dataTask(with: request as URLRequest) {
(
data, response, error) in
guard let data = data, let _:URLResponse = response where error == nil else {
print("error")
return
}
let dataString = String(data: data, encoding: String.Encoding.utf8)
print(dataString)
}
task.resume()
PlaygroundPage.current.needsIndefiniteExecution = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57181 次 |
| 最近记录: |