2016-04-28 33 views
0

我試圖發送POST參數,我的API,它得到4個變量:發送POST變量,以我的API

  • labelled
  • id_produit
  • id_magasin
  • Prix

這是我的代碼:

@IBAction func AddProduct(sender: AnyObject) { 


    let myUrl = NSURL(string: "http://vps43623.ovh.net/yamoinscher/api/products/create_product");let request = NSMutableURLRequest(URL:myUrl!); 
    request.HTTPMethod = "POST"; 
    // Compose a query string 
    let postString = "id=123456789&libelle=Florida&id_magasin=1&prix=1500"; 

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); 


    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 

     data, response, error in 

     if error != nil 
     { 
      print("error=\(error)") 
      return 
     } 

     // print out response object 
     print("response = \(response)") 

     // Print out response body 
     let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString)") 


     } 
    task.resume() 

    } 

當我執行此代碼,我得到這樣的響應:

response = Optional(<NSHTTPURLResponse: 0x7fadeaf532a0> { URL: http://vps43623.ovh.net/yamoinscher/api/products/create_product } { status code: 200, headers { 
Connection = "keep-alive"; 
"Content-Length" = 0; 
"Content-Type" = "application/x-www-form-urlencoded"; 
Date = "Thu, 28 Apr 2016 09:15:09 GMT"; 
"MS-Author-Via" = DAV; 
Server = nginx; 
"X-Powered-By" = PleskLin; 
} }) 

responseString = Optional() 

控制檯告訴我,有沒有發送到API的變量。任何人都可以幫助我嗎?

+0

狀態碼響應是200.你確定你在等待數據嗎? – Larme

+0

你期待什麼。而你是打印響應而不是顯示你發送到服務器的變量的請求。響應狀態碼是200,這意味着一切都很好。 –

回答

1
@IBAction func AddProduct(sender: AnyObject) { 


     let myUrl = NSURL(string: "http://vps43623.ovh.net/yamoinscher/api/products/create_product");let request = NSMutableURLRequest(URL:myUrl!); 
     request.HTTPMethod = "POST"; 
     // Compose a query string 
     let postString = "id=123456789&libelle=Florida&id_magasin=1&prix=1500"; 
     let postLength = String(postData.length) 

     request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); 

     request.setValue(postLength, forHTTPHeaderField: "Content-Length") 
     request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
     request.setValue("application/json", forHTTPHeaderField: "Accept") 

     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 

      data, response, error in 

      if error != nil 
      { 
       print("error=\(error)") 
       return 
      } 

      // print out response object 
      print("response = \(response)") 

      // Print out response body 
      let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
      print("responseString = \(responseString)") 


      } 
     task.resume() 

     } 
0

您的迴應在您的data對象中。因此,請以適當的響應格式轉換數據。詢問您的網絡服務提供商,您的響應格式是string,如果是,那麼您的代碼似乎是正確的,但如果您的答覆是在json format那麼您應該將您的數據json objectjsonserialization轉換。所以檢查一下,因爲你的狀態碼是200意味着好。所以,除了響應序列化之外,我認爲在代碼中沒有問題。嘗試在json中轉換數據或嘗試使用不同的閱讀選項將其轉換爲適合的字符串。

希望這會有所幫助:)