2017-09-01 1 views
0

En utilisant Alamofire pour .post api, api donnant des données dans le facteur mais pas dans mon code.En publiant ci-dessous le code, s'il vous plaît guider ce que je fais mal ici:Alamofire .post erreur API: Code = 3840 "Valeur invalide autour du caractère 1

// API calling method: 

parameters = [ 
     "Address" : "" as AnyObject, 
     "Name" : "" as AnyObject, 
     "ServiceID" : "" as AnyObject, 
     "Rating" : "" as AnyObject, 
     "Price" : "" as AnyObject 
    ] 

    let headers: Dictionary = [ 
     "" : "" 
    ] 

    print(parameters) 

    ApiServices.requestPOSTURL(strURL, params: parameters, headers: headers, success:{ 

     (JSONResponse) -> Void in 

     CommonMethodsClass.hideHUD(targetView: self.view) 

     print(JSONResponse["message"]) 

     let strMsg = JSONResponse["message"].stringValue 


     if (JSONResponse["status"].intValue == 1) 
     { 

     } 
     else 
     { 
      CommonMethodsClass.showAlertMessage(vc: self, titleStr: "Error!", messageStr: strMsg) 
     } 

    }) { 
     (error) -> Void in 
     print(error) 

     CommonMethodsClass.hideHUD(targetView: self.view) 
    } 


// Api request method: 
class func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void){ 

    Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default).responseJSON { (responseObject) -> Void in 

     print(responseObject) 

     if responseObject.result.isSuccess { 
      let resJson = JSON(responseObject.result.value as Any) 
      success(resJson) 
     } 
     if responseObject.result.isFailure { 
      let error : Error = responseObject.result.error! 
      failure(error) 
     } 
    } 
} 

Error: FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 1." UserInfo={NSDebugDescription=Invalid value around character 1.}))

Mise à jour:. Réponse à analyser, peut doit également être changé

{ 
    "status": true, 
    "message": "", 
    "data": [ 
     { 
      "SalonID": "1", 
      "SalonName": "Affinity", 
      "SalonEmail": "[email protected]", 
      "SalonPhone": "9999888877", 
      "SalonMobile": "9999888877", 
      "SalonAddress": "C-28, Sec-58, India", 
      "Latitude": "18.5806", 
      "Longitude": "27.36273", 
      "Image": null, 
      "SalonImage": "", 
      "TimeIntervalminutes": 20, 
      "AverageRating": 4, 
      "IsActive": 1 
     }, 
     { 
      "SalonID": "3", 
      "SalonName": "Looks", 
      "SalonEmail": "[email protected]", 
      "SalonPhone": "99998828877", 
      "SalonMobile": "99998388877", 
      "SalonAddress": "GP Mall,India", 
      "Latitude": "", 
      "Longitude": "", 
      "Image": null, 
      "SalonImage": "", 
      "TimeIntervalminutes": 30, 
      "AverageRating": 5, 
      "IsActive": 1 
     } 
    ] 
} 
+0

changement '' responseJSON' à responseString' –

+0

mais même code fonctionne pour une autre API –

+0

Je pense que cette réponse API est différente de cette API. C'est pourquoi il n'est pas en mesure d'obtenir. Alamofire a trouvé une valeur suspecte pour le type de réception, c'est pourquoi il donne cette erreur. –

Répondre

1

Remplacer responseJSON par responseString.

Vous devez convertir la chaîne pour les valeurs. Pouvez-vous mettre à jour la chaîne dans votre question?

Vous pouvez utiliser cette fonction pour convertir la chaîne de réponse en JSON:

func convertToDictionary(text: String) -> [String: Any]? { 
    if let data = text.data(using: .utf8) { 
     do { 
      return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] 
     } catch { 
      print(error.localizedDescription) 
     } 
    } 
    return nil 
} 

Chaîne: let str = "{\"name\":\"James\"}"

USAGES: let dict = convertToDictionary(text: str)

+0

S'il vous plaît vérifier la question, maintenant –

0

Essayez responseString au lieu de responseJSON et il travaillera

Alamofire.request("URL").responseString { response in 
    print(response) 

    if let json = response.result.value { 
     print("JSON: \(json)") 
    } 
} 
+0

pouvez-vous s'il vous plaît guider dans l'analyse? –