項目中的連接本地服務器以及JSON解析

在做項目的時候用到了連接本地服務器以及JSON編碼。

首先是在本地電腦上搭建服務器,但是在MAC上,apache是自帶的,唯一需要安裝就是數據庫,apache的啓動很簡單,只要在terminal裏輸入:sudo apachectl -k start就可以,然後輸入密碼就OK了,同時開啓數據庫。

接下來就是php編寫了,我查了一些資料,主要連接方式有兩種,POST 和 GET,我選了POST,雖然用GET也沒關係,但是因爲GET會暴露參數,所以還是用了POST,在寫php時我查了一些關於JSON編碼的方式,網絡上有兩種方式,一種是直接進行編碼:

<?php 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 
?> 

還有一種就是通過數組來編碼(也是我現在在用的方法):

while($row=mysql_fetch_object(($result)))//取出結果並顯示
        {
            $u = new User();
            $u->user_id=$row->user_id;
            $u->username=$row->username;
            $u->pic_url = $row->pic_url;
            $arr[] = $u;
       }
    
    echo json_encode($arr);
通過上面兩種方法,分別可以對數據進行JSON編碼,到時候在程序操作過程中會方便很多。

做完了JSON編碼,那麼php端的基本就完成了,接下來就是本地的連接到服務器上去了。

程序連接本地服務器步驟主要爲:


1.創建一個請求 :NSMutableURLRequest  (需要提供URL)

2.創建需要的數據體(就是進行POST請求需要發送的參數)

3.建立異步連接

 

 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        // 網絡請求結束之後執行!
}

在上面的代碼中需要創建一個進程,而這個進程不是主進程(mainQueue) 因爲如果是主進程的話,那麼用戶在聯網的時候是不能做其他事情的,這樣不合理。

而且代碼返回來的是data形式的數據,data形式可以轉換成string類型的,也可以轉換成字典類型,因爲要用到模型,所以我選擇轉換成字典類型的(也就是對JSON的解析):


NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            NSLog(@"RESPONSE DATA: %@", dic);

轉換成NSDictionary很簡單,因爲系統自帶的API裏的NSJSONSerialization速度相對於其他的JSON解析方式來說快很多,而且不必導入其他的第三方框架。這樣就完成了對JSON的解析。





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