Alamofire实现JSON数据的获取

使用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 })

你发出的GET请求的内容
response的内容是

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";

你发出的内容的GET信息的头 包含当前的一些信息
debugDescription的内容是以上的总和

测试的部分我是把一个简单的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语句查询 存在对应结果时返回一组数据


动态构造了sql语句 然后查询 输出结果为一个JSON数据



需要注意的是apple发送request需要向https发送以保证安全性,根据MVC设计模式的思路 我们再引入Model之后便可以把返回的数据加以利用
 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章