swift HTTP通信

来源:互联网 发布:湖南省国家税务局软件 编辑:程序博客网 时间:2024/06/13 22:17

一  加载网络数据 

(1)

        var str =NSString(contentsOfURL: NSURL(string: "http://www.baidu.com")!, encoding:NSUTF8StringEncoding, error: nil)

       println(str)

输出 百度首页的html代码 字符串格式 

(2)

var data =NSData(contentsOfURL: NSURL(string: "http://www.baidu.com")!)

       println(data)

输出 百度首页的二进制编码 

(3)

var data =NSData(contentsOfURL: NSURL(string: "http://www.baidu.com")!)

       println(NSString(data: data!, encoding:NSUTF8StringEncoding))

输出html代码 

(4)

        var resp:NSURLResponse?

       var error:NSError?

       var data2 = NSURLConnection.sendSynchronousRequest(NSURLRequest(URL:NSURL(string: "http://www.baidu.com")!), returningResponse: &resp, error: &error)

       if let d = data2{

           println(NSString(data: d, encoding:NSUTF8StringEncoding))

        }

        

       if let r = resp{

           println(r)

        }

        // 输出请求的头部信息 

<NSHTTPURLResponse: 0x7fce606c8520> { URL: http://www.baidu.com/ } { status code: 200, headers {

    BDPAGETYPE = 1;

    BDQID = 0x92209f320000f336;

    BDUSERID = 0;

    "Cache-Control" = private;

    Connection = "Keep-Alive";

    "Content-Encoding" = gzip;

    "Content-Type" = "text/html; charset=utf-8";

    "Cxy_all" = "baidu+2ac9d6058fed9a3b872dedc3f4c0b82c";

    Date = "Fri, 04 Sep 2015 07:44:16 GMT";

    Expires = "Fri, 04 Sep 2015 07:44:15 GMT";

    Server = "BWS/1.1";

    "Set-Cookie" = "BDSVRTM=0; path=/, BD_HOME=0; path=/, H_PS_PSSID=16475_16540_16716_1423_17155_13245_14429_12867_16938_16507_17000_16936_17004_17072_15198_11683_13932_16950_16968_10633_17051; path=/; domain=.baidu.com";

    "Transfer-Encoding" = Identity;

    Vary = "Accept-Encoding";

    "X-Powered-By" = HPHP;

    "X-UA-Compatible" = "IE=Edge,chrome=1";

} }

       if let e = error{

           println(e)

           println("无法连接网络")

        }

二 异步加载 

        NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL:NSURL(string: "http://百度.com")!), queue:NSOperationQueue()) { (resp:NSURLResponse!, data:NSData!, error:NSError!) ->Void in

            

           if let e = error {

               println("发生了错误")

            }else{

               println(NSString(data: data, encoding:NSUTF8StringEncoding))

            }


三 GET 与 POST 请求 

    @IBOutlet weak var tvOut: UITextView!

   @IBAction func connectBtnPressed(sender:AnyObject) {

        

       //GET

        NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL:NSURL(string: "http://localhost:8080/MyServer/hello.jsp?name=\(tvInput.text)")!), queue: NSOperationQueue.mainQueue()) { (resp:NSURLResponse!, data:NSData!, error:NSError!) -> Void in

            

           if let d = data {

               self.tvOut.text = NSString(data: d, encoding: NSUTF8StringEncoding)

                

//                dispatch_sync(dispatch_get_main_queue(), { () -> Void in

//                    

//                    self.tvOut.text = NSString(data: d, encoding: NSUTF8StringEncoding)

//                })

                

            }

            

        }

        

       //POST

        

        var req =NSMutableURLRequest(URL:NSURL(string:"http://localhost:8080/MyServer/hello.jsp")!)

        req.HTTPMethod ="POST"

        req.HTTPBody =NSString(string: "name=\(tvInput.text)").dataUsingEncoding(NSUTF8StringEncoding)

        

        NSURLConnection.sendAsynchronousRequest(req, queue:NSOperationQueue.mainQueue()) { (resp:NSURLResponse!, data:NSData!, error:NSError!) -> Void in

            

           if let d = data {

               self.tvOut.text = NSString(data: d, encoding: NSUTF8StringEncoding)

            }

        }

    }

   @IBOutlet weakvar tvInput: UITextField!





0 0