作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试向 Web 服务器发送 POST 请求,但我尝试发送的值位于名为 temperatureValue 的变量中。 Web 服务器查找 POST 变量“temperature”。这就是我声明我的 postData 的方式。我如何传递这个变量?
let postData = NSMutableData(data: "temperature=temperatureValue".dataUsingEncoding(NSUTF8StringEncoding)!)
POST 的其余代码包含在下面,但我的主要问题是如何格式化上面的代码以允许我的变量 temperatureValue 保存到 postData 中。
//Assign the url post address, post the data to the php page
let request = NSMutableURLRequest(URL: NSURL(string: "http://pi.access.com/stateBlinds.php")!,
cachePolicy: .UseProtocolCachePolicy,
timeoutInterval: 10.0)
request.HTTPMethod = "POST"
request.HTTPBody = postData
let session = NSURLSession.sharedSession()
let dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? NSHTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
最佳答案
您可以使用字符串插值:
let temperatureValue = 10.5
request.HTTPBody = "temperature=\(temperatureValue)".dataUsingEncoding(NSUTF8StringEncoding)
但是,如果 temperatureValue
是可选的,则您必须将其解包。
let temperatureValue: Double? = 10.5
let postString: String
if let value = temperatureValue {
postString = "temperature=\(value)"
} else {
postString = "temperature="
}
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
另请注意,这个非常简单的示例仅在处理非常简单的“值”时才有效(例如,只是没有空格或特殊字符的字母数字)。如果您采用此模式并尝试使用一般字符串,则必须对值进行百分号转义。但对于简单的数值,以上内容就足够了。
关于php - 如何在 Swift 中发送带有变量的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975457/
我是一名优秀的程序员,十分优秀!