zoukankan      html  css  js  c++  java
  • httpPost

    import Foundation

    //网络请求类

    class HttpRequest: NSObject{
    override init() {
    super.init()
    }

    class func parseJSONData(data: AnyObject?) ->NSArray?{
    do{
    let downloadData=data as? NSData
    let jsonObject = try NSJSONSerialization.JSONObjectWithData(downloadData!, options: NSJSONReadingOptions.MutableContainers) as? NSArray
    return jsonObject
    }catch{

    }
    return nil
    }

    class func post(urlString urlString: String?,postParams: NSDictionary!,completion: (data: NSArray?) -> Void){
    if urlString == nil {
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
    print("urlString 为空")
    completion(data: nil)
    })
    }

    let url = NSURL(string: urlString!)
    let request = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 10)
    request.HTTPMethod = "POST"
    parseParams(Params: postParams, completion: {(result) in
    let postData: NSData = (result?.dataUsingEncoding(NSUTF8StringEncoding))!
    request.HTTPBody = postData
    })
    let queue = NSOperationQueue()
    NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler: {
    (response,data,error) -> Void in
    let httpResponse = response as? NSHTTPURLResponse
    if httpResponse?.statusCode == 200{
    let parseData = self.parseJSONData(data)
    dispatch_async(dispatch_get_main_queue(),{
    () -> Void in
    completion(data: parseData)
    })
    }else {
    dispatch_async(dispatch_get_main_queue(), {
    () -> Void in
    print(error)
    completion(data: nil)
    })
    }
    })
    }

    class func request(urlString urlString: String?,completion: (data: NSArray?) -> Void){
    if urlString == nil {
    dispatch_async(dispatch_get_main_queue(),{ () -> Void in
    print("urlString 为空")
    completion(data: nil)
    })
    }

    let url = NSURL(string: urlString!)
    let request = NSURLRequest(URL: url!)
    let queue = NSOperationQueue()
    NSURLConnection.sendAsynchronousRequest(request, queue: queue) {
    (response, data, error) -> Void in
    let httpResponse = response as? NSHTTPURLResponse
    let code=httpResponse?.statusCode
    if code==200{
    let parseData = self.parseJSONData(data)
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
    completion(data: parseData)
    })
    }else{
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
    print(error)
    // 请求出现,则返回nil对象表示
    completion(data: nil)
    })
    }
    }
    }

    class func parseParams(Params Params: NSDictionary!,completion: (paramString: NSString?) -> Void){
    var keyValueFormat: String?
    let result = NSMutableString()
    let keyEnum = Params.keyEnumerator()
    while let key = keyEnum.nextObject() as? String{
    keyValueFormat = String.init(format: "%@=%@&", arguments: [key,(Params.valueForKey(key)?.description)!])
    result.appendString(keyValueFormat!)
    }
    completion(paramString: result)
    }
    }

    使用:

    let dc=NSDictionnary(object:a,forKeys:b)

    HttpRequest.post(urlString:"http://59.78.93.208:9097//AdviseInsert",postParam:dc,completion:{_ in})

  • 相关阅读:
    windows下 文件资源管理器 的操作
    Visual Studio Code 折叠代码快捷键
    windows 10 取消alt+tab的预览功能
    String.prototype.replace
    Webpack的tapable 为什么要使用 new Funtion 来生成静态代码
    Visual Studio Code 断点调试Nodejs程序跳过node内部模块(internal modules)
    【社群话题分享】有哪些奇葩的技术人员考核方式?
    工信部要求应用商店上新 App 检查 IPv6,这里有一份 IPv6 快速部署指南
    读完这篇文章,5G 就没有秘密了
    双剑合璧——掌握 cURL 和 Dig 走天涯
  • 原文地址:https://www.cnblogs.com/to-creat/p/5401022.html
Copyright © 2011-2022 走看看