使用Alamofire實現了JSON數據的獲取
首先是導入Alamofire包 前往https://github.com/Alamofire/Alamofire獲取最新版本
解壓完成後將其中的Alamofire.xcodeproj文件copy到你的工程文件下 然後在工程的General -> Embedded Binaries點擊+號 導入iOS用的Alamofire框架 後面改爲optional
然後在swift文件裏直接import就行了
下面是完成的代碼
import UIKit
import Alamofire
class ViewController: UIViewController {
//目標網址
var targetURL: String = "https://getinformation.sinaapp.com/login.php"
//獲取JSON數據
func getJsonData() {
Alamofire.request(.GET, targetURL, parameters: ["username": "admin", "password": "admin"])
.responseJSON { closureResponse in
self.response = closureResponse
print(closureResponse.result.value)
}
}
override func viewDidLoad() {
super.viewDidLoad()
getJsonData()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
這邊使用的是GET方法傳遞數據 當然Alamofire也支持POST方法
Alamofire.request(method, URL, parameters, encoding, headers)這是完整的輸入參數 由於傳輸回來的參數是encoding過的JSON所以不需要再設置encoding
使用的是responseJSON方法閉包 服務器返回的數據都在closureResponse中
data的內容是Optional(<7b226c6f 67696e52 6573756c 74223a22 73756363 65737322 2c226973 43686563 6b496e22 3a223022 7d2020>)
是返回內容的utf-8編碼值
description的內容是SUCCESS: { isCheckIn = 0; loginResult = success;}
描述返回是否成功 並附帶返回數據
request的內容是
Optional(<NSMutableURLRequest: 0x7fdad8438600> { URL: https://getinformation.sinaapp.com/login.php?password=admin&username=admin })
Optional(<NSHTTPURLResponse: 0x7f92d9624a10> { URL: https://getinformation.sinaapp.com/login.php?password=admin&username=admin } { status code: 200, headers {
Connection = "keep-alive";
"Content-Encoding" = gzip;
"Content-Type" = "text/html";
Date = "Mon, 16 Nov 2015 13:46:17 GMT";
Server = "openresty/1.7.10.1";
"Transfer-Encoding" = Identity;
Via = "10.67.21.26";
測試的部分我是把一個簡單的PHP文件放在sae上來的下面是PHP的代碼
<?php
$username = $_GET["username"];
$password = $_GET["password"];
$link = mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS);
$arr = array ('loginResult'=>'success','isCheckIn'=> '0');
if ($link) {
# code...
mysql_select_db("app_getinformation");
$sql = "SELECT userid FROM studentInformation WHERE username = '$username' AND password = '$password'";
$result = mysql_query($sql);
$rowcount = mysql_num_rows($result);
if($rowcount!=0) {
echo json_encode($arr);
}
}
?>
$_GET["parameter"]用於獲取提交的對應內容
$link裏面是sae官方提供的mysql連接數據 判斷連接成功後選擇對應的數據庫並通過sql語句查詢 存在對應結果時返回一組數據
需要注意的是apple發送request需要向https發送以保證安全性,根據MVC設計模式的思路 我們再引入Model之後便可以把返回的數據加以利用