将数据发布到 PHP 并使用 SwiftyJSON 获取 JSON
Posted
技术标签:
【中文标题】将数据发布到 PHP 并使用 SwiftyJSON 获取 JSON【英文标题】:POST data to PHP and getting JSON with SwiftyJSON 【发布时间】: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 脚本的特定用户名。
有人知道如何在不需要导入库的情况下做到这一点吗?
【问题讨论】:
【参考方案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-code
和POST-value-code
这两个代码结合起来。你知道吗?你能告诉我怎么做吗?
我看到您使用的库 can 与 Alamofire 一起使用。我知道,您要求的东西不会使用外部库,但在这种情况下,这将是您适应的最简单方法。
抱歉我的回复晚了。我会尝试导入 Alamofire。但是我必须如何修改我的实际代码才能达到我的目标?以上是关于将数据发布到 PHP 并使用 SwiftyJSON 获取 JSON的主要内容,如果未能解决你的问题,请参考以下文章
使用 swiftyJSON 和 sqlite.swift 将基于 json 的数据添加到 sqlite 数据库中
如何使用 SwiftyJSON 在 Swift 中解析这个 JSON 对象?
将 JSON 响应保存为变量以使用 SwiftyJSON 反序列化
如何使用 Alamofire 和 SwiftyJSON 将数据发送到表视图