2016-03-05 92 views
1

我想用Swift執行一些POST請求,但我不知道該怎麼做。這是我怎麼用CURL做的:執行簡單的POST請求Swift

curl --data "ime=YOURNAME&pitanje=YOURQUESTION" http://localhost/seka/postavi.php 

如何在Swift for iOS中做到這一點?

回答

2

很簡單RestApiManager類我認爲這將有助於你

typealias ServiceResponse = (JSON, NSError?) -> Void 

class RestApiManager: NSObject { 
    static let sharedInstance = RestApiManager() 

    let baseURL = "http://api.randomuser.me/" 

    func getRandomUser(onCompletion: (JSON) -> Void) { 
     let route = baseURL 
     makeHTTPGetRequest(route, onCompletion: { json, err in 
      onCompletion(json as JSON) 
     }) 
    } 

    func makeHTTPGetRequest(path: String, onCompletion: ServiceResponse) { 
     let request = NSMutableURLRequest(URL: NSURL(string: path)!) 

     let session = NSURLSession.sharedSession() 

     let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
      let json:JSON = JSON(data: data) 
      onCompletion(json, error) 
     }) 
     task.resume() 
    } 

    func makeHTTPPostRequest(path: String, body: [String: AnyObject], onCompletion: ServiceResponse) { 
     var err: NSError? 
     let request = NSMutableURLRequest(URL: NSURL(string: path)!) 

     // Set the method to POST 
     request.HTTPMethod = "POST" 

     // Set the POST body for the request 
     request.HTTPBody = NSJSONSerialization.dataWithJSONObject(body, options: nil, error: &err) 
     let session = NSURLSession.sharedSession() 

     let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
      let json:JSON = JSON(data: data) 
      onCompletion(json, err) 
     }) 
     task.resume() 
    } 

} 
+0

我得到'使用未申報的ty pe JSON',我不知道如何將這些CURL的觀點提交給這個班級? –

0

但是類型定義的答案是非常好的,什麼是真正的工作,因爲它應該是這個簡單的代碼:

func postRequest(text: String, ime: String) { 
    if let url = NSURL(string: "your_link_to_post_to"){ 

     let request = NSMutableURLRequest(URL: url)!) 
     request.HTTPMethod = "POST" 
     let postString = "ime=\(ime)&pitanje=\(text)" 
     request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 
      guard error == nil && data != nil else {               // check for fundamental networking error 
       print("error=\(error)") 
       return 
      } 

      if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {   // check for http errors 
       print("statusCode should be 200, but is \(httpStatus.statusCode)") 
       print("response = \(response)") 
      } 

      let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
      print("responseString = \(responseString)") 
     } 
     task.resume() 


    } 

}

這裏的關鍵是let postString = "yourStringToPost".dataUsingEncoding(NSUTF8StringEncoding)