【问题标题】:POST data to PHP and getting JSON with SwiftyJSON将数据发布到 PHP 并使用 SwiftyJSON 获取 JSON
【发布时间】:2016-09-11 09:18:15
【问题描述】:

我正在使用 Xcode 和 Swift 开发 iOS 应用程序。

我正在使用SwiftyJSON.swift 和以下代码获取 JSON 数据:

import UIKit

class ViewController: UIViewController {

    var dict = NSDictionary()

    @IBOutlet weak var firstLb: UILabel!
    @IBOutlet weak var secondLb: UILabel!
    var uasername = "TestUserName"

    override func viewDidLoad() {

        super.viewDidLoad()

        let urlString = "http://example.com/showUserInfo.php"

        if let url = NSURL(string: urlString) {

            if let data = try? NSData(contentsOfURL: url, options: []) {

                let json = JSON(data: data)

                print(json)

                let f = json[0]["name"].stringValue

                let s = json[0]["age"].stringValue

                firstLb.text = f

                secondLb.text = s
            }
        }
    }
}

但我也希望能够向 showUserInfo.php 发布一个值。

我的 showUserInfo.php PHP 脚本如下所示:

<?php
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
include "$root/config.php";

$username = $_POST['username'];

$stmt = $pdo->prepare('SELECT * FROM contact WHERE username = :username');
$stmt->execute(array('username' => $username));

$userData = array();

while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
$userData[] = $row;
}
echo json_encode($userData);
?>

在我的 PHP 脚本中使用 $username = "TestUserName"; 而不是 $username = $_POST['username']; 时,使用我的 Swift 代码从 PHP 脚本获取 JSON 数据效果很好。但我希望能够$_POST 在我的应用程序中声明的这个 PHP 脚本的特定用户名。

有人知道如何在不需要导入库的情况下做到这一点吗?

【问题讨论】:

    标签: ios json swift post


    【解决方案1】:

    这里是 Alamofire 和 SwiftyJSON 的实现

    let parameters = ["username": "TestUserName"]
    
        Alamofire.request(.POST, "http://example.com/showUserInfo.php",parameters: parameters).responseJSON { response in
            debugPrint(response.result.value)
             let json = JSON(data: response.data!)
            print(json)
    
            let f = json[0]["name"].stringValue
    
            let s = json[0]["age"].stringValue
    
            firstLb.text = f
    
            secondLb.text = s
        }
    

    【讨论】:

      【解决方案2】:

      在默认行为中,NSURL 使用 GET 作为 HTTP 方法。您必须使用 NSMutableURLRequest 并将名为 HTTPMethod 的属性设置为 POST。如果您想查看在 Swift 2/3 中使用发布请求的确切示例,请访问 here

      【讨论】:

      • 嗨@Sebastian K,非常感谢您尝试帮助我。感谢您的链接。我知道这种 POST 值的方法。但我无法将get-JSON-codePOST-value-code 这两个代码结合起来。你知道吗?你能告诉我怎么做吗?
      • 我看到您使用的库 can 与 Alamofire 一起使用。我知道,您要求的东西不会使用外部库,但在这种情况下,这将是您适应的最简单方法。
      • 抱歉我的回复晚了。我会尝试导入 Alamofire。但是我必须如何修改我的实际代码才能达到我的目标?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2016-02-10
      相关资源
      最近更新 更多