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網路資料要求方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.