从Swift中读取PHP中的JSON


Read JSON in PHP from Swift

我的php文件读取JSON数据时遇到问题。我使用swift将数据发送到服务器。我对请求进行编码,当我将其作为字符串发送时,一切都很好。我的字符串在PHP中运行良好,看起来像这个

id=e61db0&time=Feb 13, 2015,因此当PHP 接收到时,此操作正常

然而,当我使用字典并编码NSData时,我的PHP文件无法读取它。我解码了我发送的数据,它看起来像这样:

{"id":"e61db0", "time":"Feb 13, 2015"}当php 收到时,这不起作用

对于我的请求设置标题,我这样做:

var imageData = UIImageJPEGRepresentation(ui_image, 0.5)
let base64encoded = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
var params = ["id": uid, "time": date, "comment": img_com_e, "image": base64encoded]
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"    
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var error: NSError?
        request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: .allZeros, error: &error)
        if let error = error {
            println("'(error.localizedDescription)")
        }
        let dataTask = session.dataTaskWithRequest(request) { data, response, error -> Void in
            let res = response as NSHTTPURLResponse!;
            NSLog("Response code: %ld", res.statusCode);
        if (res.statusCode >= 200 && res.statusCode < 300)
        {
            var responseData:NSString  = NSString(data: data, encoding:NSUTF8StringEncoding)!
            return_val = responseData
            NSLog("Response ==> %@", responseData);
        } else {
            return_val = "bad"
            //println(return_val)
        }
    }
    dataTask.resume()

不确定发生了什么。我的服务器PHP文件是否无法识别它是JSON数据,并且无法接受$_POST['id']。我应该以不同的方式设置标题吗?

php代码在哪里?

如果您发送Content-Type: application/json

你应该读php://input而不是$_POST

尝试:

$data = json_decode(file_get_contents('php://input'), true);
print_r($data);
echo $data["id"];