IOS网络、多线程、shareSDK-使用Post请求

使用同步Post请求,同步获取IP地址的信息

//
//  ViewController.swift
//  Dome2test
//
//  Created by 郭文亮 on 2018/11/21.
//  Copyright © 2018年 finalliang. All rights reserved.
//

import UIKit
class ViewController: UIViewController {
    var label = UILabel()
    override func viewDidLoad() {
        super.viewDidLoad()
        label.frame = CGRect(x: 20, y: 40, width: 280, height: 500)
        label.text = "loading..."
        label.font = UIFont(name: "Arial", size: 12)
        label.backgroundColor = UIColor.lightGray
        label.numberOfLines = 0
        label.lineBreakMode = NSLineBreakMode.byWordWrapping
        self.view.addSubview(label)
        
        let url = URL(string: "http://ip.taobao.com/service/getIpInfo.php?ip=63.223.108.42")
        var request = URLRequest.init(url: url!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30)
        //设置网络通信方式为Post 默认为get  post相对来说传递数量更大,更安全。但效率相对低一些
        request.httpMethod = "POST"
        //初始化一个信号量 为0。实现同步效果
        let semaphore = DispatchSemaphore(value: 0)
        let session = URLSession.shared
        let task = session.dataTask(with: request, completionHandler: {(data,response,error)
            -> Void in
            if error != nil {
                print(error.debugDescription)
            }else{
                let result = String(data: data!, encoding: String.Encoding.utf8)
                DispatchQueue.main.async(execute: {() -> Void in
                    self.label.text = result
                })
            }
            semaphore.signal()
        })
        task.resume()
        _ = semaphore.wait(timeout: DispatchTime.distantFuture)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

通过异步POST请求获取ip地址的信息 

//  ViewController.swift
//  Dome2test
//
//  Created by 郭文亮 on 2018/11/21.
//  Copyright © 2018年 finalliang. All rights reserved.
//

import UIKit
class ViewController: UIViewController {
    var label = UILabel()
    override func viewDidLoad() {
        super.viewDidLoad()
        label.frame = CGRect(x: 20, y: 40, width: 280, height: 500)
        label.text = "loading..."
        label.font = UIFont(name: "Arial", size: 12)
        label.backgroundColor = UIColor.lightGray
        label.numberOfLines = 0
        label.lineBreakMode = NSLineBreakMode.byWordWrapping
        self.view.addSubview(label)
       
        let url = URL(string: "http://ip.taobao.com/service/getIpInfo.php?ip=63.223.108.42")
        var request = URLRequest(url: url!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30)
        request.httpMethod = "POST"
        let session = URLSession.shared
        let task = session.dataTask(with: request, completionHandler: {(data,response,error)
            -> Void in
            if (error != nil){
                print(error.debugDescription)
            }else{
                let result = String(data: data!, encoding: String.Encoding.utf8)
                DispatchQueue.main.async(execute: {() -> Void in
                    self.label.text = result
                })
            }
        })
        task.resume()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值