我正在尝试制作一个小程序,将用户名发送到网络数据库。并获取用户的姓名、状态、积分。 我已经知道如何发送用户名并获取 json 输出。 它看起来像这样:{“name”:“gert”,“status”:“0”,“point”:“20”} 这是我的 php 代码
<?php
header('Content-type: application/json');
ob_start();
session_start();
mysql_connect("host","username","password");
mysql_select_db("dbname") or die("Unable to select database");
$qrcode = $_POST['username'];
$result = mysql_query("SELECT * FROM qrcode WHERE qrcode = '$qrcode' ");
$pic_name = mysql_fetch_array($result);
$myObj = new \stdClass();
$myObj->name = $pic_name['name'];
$myObj->status = $pic_name['status'];
$myObj->point = $pic_name['point'];
$myJSON = json_encode($myObj);
echo $myJSON;
ob_end_flush();
?>
这是我的快速代码
import UIKit
class ViewController: UIViewController {
let url_to_request:String = "http://www.hholm.dk/time_app/gertqrcode.php"
override func viewDidLoad() {
super.viewDidLoad()
download_request()
}
func download_request()
{
let url:URL = URL(string: url_to_request)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url)
request.httpMethod = "POST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let paramString = "username=200"
request.httpBody = paramString.data(using: String.Encoding.utf8)
let task = session.downloadTask(with: request as URLRequest, completionHandler: {
(
location, response, error) in
let urlContents = try! NSString(contentsOf: location!, encoding: String.Encoding.utf8.rawValue)
guard let _:NSString = urlContents else {
print("error")
return
}
print(urlContents)
})
task.resume()
}
}
现在我必须提取 json,(我认为它被称为) 我想要名称、状态和要点,因为我可以在程序的其余部分使用一些功能。
最佳答案
试试吧。 如果您有任何疑问请告诉我,希望对您有所帮助!
import Foundation
import UIKit
class getJSON: NSObject, URLSessionDataDelegate
{
//properties
var data : NSMutableData = NSMutableData()
func downloadItems(user:String)
{
let url = NSMutableURLRequest(url: NSURL(string: "http://192.168.1.102:8888/test/test.php")! as URL)
url.httpMethod = "POST"
let postString = "a=\(user)"
url.httpBody = postString.data(using: String.Encoding.utf8)
print(url.httpBody = postString.data(using: String.Encoding.utf8))
var session: URLSession!
let configuration = URLSessionConfiguration.default
session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
let task = session.dataTask(with: url as URLRequest)
task.resume()
}
func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
{
self.data.append(data as Data);
}
func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?)
{
if error != nil
{
print("Not Found", error ??)
}
else
{
print("Ok")
self.parseJSON()
}
}
func parseJSON()
{
var jsonResult: NSArray = NSArray()
do
{
jsonResult = try JSONSerialization.jsonObject(with: self.data as Data, options:JSONSerialization.ReadingOptions.allowFragments) as! NSArray
print("jsonResult.count",jsonResult.count)
}
catch let error as NSError
{
print("jsonResult: ", error)
}
var jsonElement: NSDictionary = NSDictionary()
var contador = 0
for i in (0..<jsonResult.count)
{
jsonElement = jsonResult[i] as! NSDictionary
if let nameUser = jsonElement["name"] as? String,
let pointUser = jsonElement["point"] as? String,
let statusUser = jsonElement["status"] as? String
{
print("Name: ", nameUser)
print("Status: ", statusUser)
print("Point: ", pointUser)
}
}
}
}
在你的 php 中尝试这个,我向你展示我如何让它为我工作,它需要根据你的意愿进行更改,我将传递此代码作为示例。
<?php
header('Content-type: application/json');
ob_start();
session_start();
mysql_connect("host","username","password");
mysql_select_db("dbname") or die("Unable to select database");
$qrcode = $_POST['username'];
$query="SELECT name,status,point FROM qrcode WHERE qrcode = '$qrcode'";
$resultset = mysql_query($query, $connection);
$data = array();
while ($row = mysql_fetch_assoc($resultset))
{
$data[] = $row;
}
//echo '<pre>',print_r($data),'</pre>';
echo json_encode($data);
ob_end_flush();
?>
在你的 View Controller 中:
import UIKit
class ViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
print("Status: ",getStatusUSer)
}
@IBAction func get(_ sender: Any)
{
let userName = "charles"
let getUser = getJSON()
getUser.downloadItems(user:userName)
}
//Your Code...
}
关于php - Xcode 8.3从php和json获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709643/