2015-04-02 26 views
0

我可以使用iPhone中的任何網絡API(如AFNetworking,MKNetworkKit等)將任何函數的服務器響應返回到其調用函數。在iPhone中返回HTTPS響應的網絡API

目前我正在使用NSURLRequest的httpGet函數。我做了以下功能,但我無法將服務器響應返回給它的調用函數。請幫幫我。

func connserv(jsonString:NSDictionary) -> NSDictionary{ 
    var abc: NSDictionary? 
    // This is the action performed when clicked on the Connect button on the connectivity screen 
    println("------------------Function connserv") 

    let prefs = NSUserDefaults.standardUserDefaults() 
    var IP: AnyObject = prefs.objectForKey("IP")! 
    var port: AnyObject = prefs.objectForKey("Port")! 
    println("IP in Connection : \(IP)") 
    println("port in Connection : \(port)") 
    prefs.synchronize() 
    //var learn = LearnNSURLSession() 
    let localizedModel = UIDevice.currentDevice().localizedModel 
    let model = UIDevice.currentDevice().model 
    let devicesystemVersion = UIDevice.currentDevice().systemVersion 

    println("HTTP request jsonString : \(jsonString)") 
    var request = NSMutableURLRequest(URL: NSURL(string: "https://\(IP):\(port)/")!) 

    var response: NSURLResponse? 
    var error: NSError? 

    //println("HTTP request jsonString : \(jsonString)") 

    var err: NSError? 
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(jsonString, options: nil, error: &err) 
    request.HTTPMethod = "POST" 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.setValue("application/json", forHTTPHeaderField: "Accept") 
    // send the request 
    var learn = LearnNSURLSession() 
    println("HTTP request : \(request)") 
    learn.httpGet(request) { 
     (resultString, error) -> Void in 
     if error != nil 
     { 
      println("completion block") 

     } 
     else 
     { 
      let data = (resultString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 
      var er: NSError? 
      let JSONdata: AnyObject = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers,error: &er)! 

      let abc: AnyObject = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves, error:&er)! 

      println("abc : \(abc)") 
      println("JSONdata : \(JSONdata)") 

      learn.callback(result: resultString, error: error) 
     } 
    } 
    //return abc!; 
} 

回答

0

我不知道你的LearnNSURLSession類的工作,所以我不能推薦一種解決方案。但在這裏是如何與返回的數據和任何錯誤信息,找到返回的頭和狀態,同時,從NSURLConnection的,記錄here

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.currentQueue(), completionHandler: { 
     response, data, error in 
     if let response = response as? NSHTTPURLResponse { 
      debugPrintln(response.allHeaderFields) 
      let statusCode = response.statusCode 
      debugPrintln("statusCode: \(statusCode): \(NSHTTPURLResponse.localizedStringForStatusCode(statusCode))") 
     } else { println("That's odd.") } 
    }) 

雖然該文件表明,響應是NSURLResponsethis page明確你會得到一個NSHTTPURLResponse其中包含所有的標題和狀態。

如果你需要一個同步版本,直到它得到的結果,將停止該功能,您可以使用this call instead,像這樣:

var response:NSURLResponse? 
var e: NSError? 
NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &e) 
debugPrintln(response) 

,讓你到一個有意義的結果返回給調用者。

+0

Emrys57,我從服務器得到響應和一切。它沒有問題。我想將服務器響應返回給connserv函數的調用函數。問題在那裏。我希望你現在有個更好的主意 – 2015-04-02 14:31:37

+0

嘗試新版本 – emrys57 2015-04-02 14:50:32

+0

我會嘗試。我能否在異步連接中做同樣的事情? – 2015-04-02 14:58:26