我正在尝试向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()
答案 0 :(得分:0)
您可以使用字符串插值:
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)
另请注意,这个非常简单的示例仅适用于处理非常简单的"值" (例如,只有字母数字,没有空格或特殊字符)。如果您采用此模式并使用常规字符串进行尝试,则必须以百分比形式转义该值。但对于简单的数值,上面就足够了。