swift網路資料要求方法

來源:互聯網
上載者:User

標籤:

搭建一個apache伺服器,用php編寫一個返回給用戶端請求資料的指令碼

 1 <?php 2     // header("Content-type:text/html;charset=utf-8"); 3     header("Content-type:text/json;charset=utf-8"); 4     if (isset($_REQUEST[‘name‘])) { 5         $result = $_REQUEST[‘name‘]; 6         $arr=array("result"=>$result); 7         $json=json_encode($arr); 8         echo $json; 9     }10 ?>

 該php實現了接收一個用戶端的遠程post或者get請求,然後返回給其一個簡單的json字串,

開啟Xcode建立一個singleView工程,在IB中添加一個button和一個label並連線到代碼中的outlet,我的測試php檔案的地址為:

let url = "http://192.168.1.106/apprequesttest/index.php"

下面開始描述兩種實現網路請求的方法,在button的action事件中添加網路請求

IOS SDK內建的網路要求方法:

GET要求方法:

1         var msg = "jimmy"2         NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "\(url)?name=\(msg)")!), queue: NSOperationQueue()) {       (res:NSURLResponse!, data:NSData!, error:NSError!) -> Void in3             if let d = data{4                 var getMsg = NSString(data: d, encoding: NSUTF8StringEncoding)! as String5                 dispatch_async(dispatch_get_main_queue(), { () -> Void in6                     self.label.text = getMsg7                 })8             }9         }

POST要求方法:

 1         var req = NSMutableURLRequest(URL: NSURL(string: url)!) 2         req.HTTPMethod = "POST" 3         req.HTTPBody = NSString(string: "name=jimmy").dataUsingEncoding(NSUTF8StringEncoding) 4         NSURLConnection.sendAsynchronousRequest(req, queue: NSOperationQueue()) { (_, data, _)-> Void in 5             if let d = data{ 6                  var postMsg = NSString(data: d, encoding: NSUTF8StringEncoding) 7                 dispatch_async(dispatch_get_main_queue(), { () -> Void in 8                   self.label.text = postMsg! as String 9                 })10             }11         }

 

第三方開源庫Alamofire:

Alamofire是swift網路編程中替代AFNetworking的第三方開源庫,作者為同一人,使用Alamofire需要在github上下載該庫,然後將其引入到工程中,如示:

將解壓包中的Alamofire.xcodeproj拖拽到項目名下

在Embedded Binaries中添加上面紅色箭頭的尾部的framework,注意不要添加下面的framework,雖然二者名字一樣,但是上面的是ios的庫,下面的是osX的庫,點擊add按鈕,運行程式,確保編譯成功。

在我們的工程檔案裡面飲入Alamofire便可以使用它了

1         Alamofire.request(.POST, url, parameters: ["name":"jimmy"]).responseJSON(options: NSJSONReadingOptions.AllowFragments) { (req, _, json, _) -> Void in2 //            println(req.URLString)3 //            println(json?.valueForKey("result"))4             self.label.text = json?.valueForKey("result") as? String5             6         }

通過Alamofire可以只需要幾行代碼就完成網路資料的請求,上面的的parameters是給php發了一個post請求,請求名稱是name,值為“jimmy”,這樣label上就會快速的顯示返回的json資料,由於alamofire本就是非同步請求,所以不必像第一種方法那樣在更新UI的時候,還要跳到主線程,在Alamofire中,請求只要返回正確,便可以在必包函數中任意的做UI上的操作了

 

  

swift網路資料要求方法

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.