【问题标题】:Swift 2.0 - Store JSON value from swift to a php variable and display using php echoSwift 2.0 - 将 JSON 值从 swift 存储到 php 变量并使用 php echo 显示
【发布时间】:2016-01-05 14:14:40
【问题描述】:

我正在尝试将 swift 发布的设备令牌存储到 php 变量中以供将来参考(例如检查令牌是否已存在于数据库中)。

这是我的 Swift 代码:

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

    let sampleToken = deviceToken.hexString()
    let session = NSURLSession.sharedSession()
    let postBody = NSString(format: "token=\(sampleToken)")
    let endBody = NSURL(string: "http://www.samplesite.com/sub1/sub2/testing.php")
    let request = NSMutableURLRequest(URL: endBody!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 30.0)
    request.HTTPMethod = "POST";
    request.HTTPBody = postBody.dataUsingEncoding(NSUTF8StringEncoding)
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
        if data != nil {
            print("data: \(response)")
        } else {
            print("failed: \(error!.localizedDescription)")
        }
    }
    dataTask.resume()    
}

这是我用于存储令牌的 php 文件:

<?php

$token = $_REQUEST['token'];

var_dump(json_decode($token)); //returns null
var_dump(json_decode($token, true)); //returns null

include_once("includes/dbi_connect.php");

        $sql1 = "INSERT INTO tbs_main . userTokenInfo (token) VALUES ('".$token."')";
        $result = mysqli_query($conn, $sql1);
?>

令我困惑的是,令牌仍然记录在数据库中,但无法显示。我在这里遗漏了一些东西,我真的不知道在哪里和什么。设备令牌的传递和转换是否有问题?还是在php端?

更新

我尝试按照 Ammo 的建议使用 var_dump('$token');,但它只返回了一个 null

【问题讨论】:

    标签: php mysql json swift


    【解决方案1】:

    您根本不会从 swift 发送 JSON,它是一个纯 HTTP 请求。

    试试 var_dump($token);在 php 中,而不是 json_decode($token)。

    这就是为什么您可以在 db 中看到令牌,但您只是试图错误地显示它。

    如果你愿意,你可以使用像 Alamofire 这样的库从 swift 发送一个 json。

    【讨论】:

    • 我尝试过使用 var_dump,但它仍然显示/返回一个空值。 swift部分有问题吗?
    • 我也试过 var_dump('$_POST'); 并返回 array(0){}。所以似乎php无法从swift读取post请求
    【解决方案2】:

    请检查 mod_rewrite PHP / Apache 模块。

    您需要启用该模块。

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2014-08-09
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多