【发布时间】:2015-02-01 04:01:01
【问题描述】:
如何将 Swift 生成的字典作为参数发布到 PHP URL 中?
具体来说,任务是更新托管数据库上的许多字段。我没有将每个字段的新值定义为单独的参数,而是希望传递一个字典,其中键是字段名称,值是新值。该数据在 Swift 中已经以 Dictionary<String, String> 的形式存在 - 如何以以下格式将其附加到 php url:
"http://server/directory/targetScript.php/?recordId=\(recId)&newFieldArray=\(itemDict)"
地点:
recId = 正在更新的记录 ID(作为与字典一起传递单独变量的示例)
itemDict= Swift 生成的字典
这是当前代码: ...它返回一个错误,将url 显示为“nil”
class func updateItemInfo ( recordId:String, updatedDict:Dictionary<String, String> ) -> Void {
//recordId = the FileMaker recordId of the item being updated
//updatedDict = the primaryKey of the current item
//direct to php file location
let server:String = "myServer.com"
let phpFile:String = "/php/UpdateRecord.php"
let baseURL = NSURL(string: "http://\(server)\(phpFile)")
let url = NSURL(string: "?recordId=\(recordId)&newData=\(updatedDict)", relativeToURL: baseURL)
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 20.0)
request.HTTPMethod = "POST"
// set data
var dataString = ""
let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = requestBodyData
var response: NSURLResponse? = nil
var error: NSError? = nil
let reply: NSData! = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println(results)
}
【问题讨论】:
-
使用
NSJSONSerialization类将字典转换为NSData对象,并将其设置为HTTPBody。然后在 PHP 中执行json_decode(file_get_contents('php://input'))来读取数据。
标签: php ios swift dictionary