【问题标题】:Post dictionary from Swift to PHP将字典从 Swift 发布到 PHP
【发布时间】: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


【解决方案1】:

为什么不使用 JSON 来传递值。

  1. 转换Dictionary to JSON String.
  2. 如果您将此数据作为查询字符串发送;你将不得不URL encode it
  3. 终于可以发给PHP了;它将作为 $_GET 中的单个参数到达的位置。 在那里,您将需要 PHP 的 json_decode 来从中获取关联的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2010-11-03
    • 1970-01-01
    • 2012-12-02
    • 2014-01-21
    相关资源
    最近更新 更多