在网上寻找到的一个swift的类, 用于发送json的http请求,自己根据同步的线程,直接写了一个 ,有两个方法,上面的是自己改的,下面的是原始作者写的,带有回调的

//

//  HttpRequestUtil.swift

//  exiuge

//

//  Created by zhaizi on 3/12/15.

//  Copyright (c) 2015 zhaizi. All rights reserved.

//  自定定义的请求json的类

import Foundation

class HttpRequestUtil {

    

//    static func interestBy(amount : Double) -> Double { 

//        return interestRate * amount

//    }

//    

//    

    

    class func post(params : NSDictionary, url : String) ->  NSDictionary {

        var request = NSMutableURLRequest(URL: NSURL(string: url)!)

        var session = NSURLSession.sharedSession()

        

        

        var err: NSError?

        request.HTTPMethod = “POST”

        

        request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)

        request.addValue(“application/json”, forHTTPHeaderField: “Content-Type”)

        request.addValue(“application/json”, forHTTPHeaderField: “Accept”)

        

        var responseData:NSData  =  NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)!

        

        var strData = NSString(data: responseData, encoding: NSUTF8StringEncoding)

        println(“Response: \(strData))

        

        

        var jsonResult:NSDictionary = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

        //[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];

        return jsonResult

  

        

    }

    

    

    //使用类中静态方法正确使用的类

   

    

    class func post_stand(params : NSDictionary, url : String, postCompleted : (succeeded: Bool, msg: String) -> ()) {

        var request = NSMutableURLRequest(URL: NSURL(string: url)!)

        var session = NSURLSession.sharedSession()

        request.HTTPMethod = “POST”

        

        var err: NSError?

        request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)

        request.addValue(“application/json”, forHTTPHeaderField: “Content-Type”)

        request.addValue(“application/json”, forHTTPHeaderField: “Accept”)

        

        var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in

            println(“Response: \(response))

            var strData = NSString(data: data, encoding: NSUTF8StringEncoding)

            println(“Body: \(strData))

            var err: NSError?

            var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as? NSDictionary

            

            var msg = “No message”

            

            // Did the JSONObjectWithData constructor return an error? If so, log the error to the console

            if(err != nil) {

                println(err!.localizedDescription)

                let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)

                println(“Error could not parse JSON: ‘\(jsonStr)‘”)

                postCompleted(succeeded: false, msg: “Error”)

            }

            else {

                // The JSONObjectWithData constructor didn’t return an error. But, we should still

                // check and make sure that json has a value using optional binding.

                if let parseJSON = json {

                    // Okay, the parsedJSON is here, let’s get the value for ‘success’ out of it

                    //                    if let success = parseJSON[“data”] as? Bool {

                    //                        println(“Succes: \(success)”)

                    //                        postCompleted(succeeded: success, msg: “Logged in.”)

                    //                    }

                    

                    

                    //                                        if let success = parseJSON[“data”] as? Bool {

                    //                                            println(“Succes: \(success)”)

                    //                                            postCompleted(succeeded: success, msg: “Logged in.”)

                    //                                        }

                    //

                    

                    

                    postCompleted(succeeded: true, msg: NSString(data: data, encoding: NSUTF8StringEncoding)!)

                    

                    

                    

                    

                    

                    

                    

                    return

                }

                else {

                    // Woa, okay the json object was nil, something went worng. Maybe the server isn’t running?

                    let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)

                    println(“Error could not parse JSON: \(jsonStr))

                    postCompleted(succeeded: false, msg: “Error”)

                }

            }

        })

        

        task.resume()

    }

    

    

    

}