2017-09-08 7 views
0

Je fais un postRequest très simple mais je le service ne me répond pas, avez-vous une idée de pourquoi cela se produit? peut-être que je fais quelque chose de mal, pourriez-vous m'aider? Merci d'avance.Post demande ne répond pas

Voici mon code Request in postman

@IBAction func buton(_ sender: Any) { 
     let parameters = ["acceptPrivacyNotice": true, "name" :"xxxxx xxxxx", "email": "[email protected]", "password":"Qwerty2012", "passwordConfirm":"Qwerty2012","deviceID" : "", "isProvider" : false, "idTypeProvider": 1] as [String : Any] 

     guard let url = URL(string: "https://www.apps-sellcom-dev.com/Engie/api/account/register") else {return} 
     var request = URLRequest(url: url) 
     request.httpMethod = "POST" 
     request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
     request.addValue("M1o2K1RVMzRHVSNteUtLOjNzSCR5LUEyKk5qOEhFRg==", forHTTPHeaderField: "Authorization") 

     guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { 
      return 
     } 
     request.httpBody = httpBody 

     let session = URLSession.shared 
     session.dataTask(with: request) { (data, response, error) in 
      if let response = response { 
       print("Response",response) 
      } 
      if let data = data { 
       do { 
        let json = try JSONSerialization.jsonObject(with: data, options: []) 

        print(json) 
       } catch { 
        print(error) 
       } 
      } 
     }.resume() 
    } 
+0

N'utilisez pas 'JSONSerialization', peut-être que votre serveur ne gère pas ce format, essayez d'abord avec une chaîne de caractères normale, par exemple .key = value & ...' – Tj3n

Répondre

0

Essayez ceci:

@IBAction func buton(_ sender: Any){ 
    let params = ["acceptPrivacyNotice": true, "name" :"xxxxx xxxxx", "email": "[email protected]", "password":"Qwerty2012", "passwordConfirm":"Qwerty2012","deviceID" : "", "isProvider" : false, "idTypeProvider": 1] as [String : Any] 
     let session = Foundation.URLSession.shared 
     let url = URL(string: "https://www.apps-sellcom-dev.com/Engie/api/account/register") 
     var request = URLRequest(url : url!) 
     request.httpMethod = "POST" 


     do { 

      let jsonData = try JSONSerialization.data(withJSONObject: params, options: .prettyPrinted) 
      request.addValue("M1o2K1RVMzRHVSNteUtLOjNzSCR5LUEyKk5qOEhFRg==", forHTTPHeaderField: "Authorization") 
      request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 
      request.httpBody = jsonData 

      session.dataTask(with: request, completionHandler: { data, response, error in 
       OperationQueue.main.addOperation { 

        guard error == nil && data != nil else { 
         print("error=\(String(describing: error))") 
         return 
        } 

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

        let responseString = String(data: data!, encoding: String.Encoding.utf8) 
        print("responseString = \(responseString!)") 

        if let responsedata = responseString!.data(using: String.Encoding.utf8)! as? Data{ 

         do { 

          let jsonResult:NSDictionary = try JSONSerialization.jsonObject(with: responsedata, options: []) as! NSDictionary 
          print("Get The Result \(jsonResult)") 
          if error != nil { 
            print("error=\(String(describing: error))") 

          } 


          if let str = jsonResult["success"] as? NSNull { 
           print("error=\(str)") 

          } 
          else { 
           let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 
           print("Response string : \(String(describing: responseString))") 
          } 



         } catch let error as NSError { 
          print(error.localizedDescription) 
         } 
        } 
       } 
      }) .resume() 
     }catch { 

     } 

    } 
0

Je l'ai testé votre code et la raison pour laquelle vous ne voyez pas une réponse est que le bloc d'achèvement ne fait pas quoi que ce soit en cas d'échec.

Quand je courais votre demande, il est revenu avec l'erreur suivante

Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error" UserInfo={NSErrorPeerAddressKey=<CFData 0x608000092200 [0x101840c70]>{length = 16, capacity = 16, bytes = 0x100201bb34bface50000000000000000}, _kCFStreamErrorCodeKey=100, _kCFStreamErrorDomainKey=1} 

Ma meilleure estimation est qu'il ya quelque chose de mal dans le httpBody. J'espère que cela pourra aider.

+0

Ok, merci beaucoup, je vais vérifier que je pense que c'est parce que Le paramètre "deviceId" dans le facteur doit être Null et je n'ai aucune expérience dans la gestion de ces types de données. – user8172235