如何使用变量在Swift中发送POST请求

时间:2016-03-13 20:32:41

标签: php swift http

我正在尝试向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()

1 个答案:

答案 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)

另请注意,这个非常简单的示例仅适用于处理非常简单的"值" (例如,只有字母数字,没有空格或特殊字符)。如果您采用此模式并使用常规字符串进行尝试,则必须以百分比形式转义该值。但对于简单的数值,上面就足够了。