2017-02-04 2 views
0

Я пытаюсь сделать запрос .POST с Alamofire в Swift 3. I've написана следующая функцияPOST Запрос Swift 3,0 Alamofire

func postToken(Token: String) { 
    let parameters : [String:Any] = ["api_key":"ivaomobileapp", "function":"login", "IVAOTOKEN=":"\(Token)"] 
    Alamofire.request("URL", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in 

     switch(response.result) { 
     case .success(_): 
      if let data = response.result.value{ 
       print(data) 
      } 
      break 

     case .failure(_): 
      print(response.result.error as Any) 
      break 

     } 
    } 
} 

Но код работы это не распространяется, он дает следующее сообщение об ошибке :

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

Это тот же самый запрос в CURL (UNIX)

curl https://whatever -X POST -F 'api_key=ivaomobileapp' -F 'function=Login' -F 'IVAOTOKEN=whatever' 

Что я делаю неправильно?

Благодаря

+0

сервер на стороне ответа скачками, код прекрасно –

+0

Ответ неверный объект JSON. – Michal

+0

@ Anbu.Karthik Я сделал это возвращение JSON сейчас, все тот же вопрос. – ctabuyo

ответ

0

Я думаю, что вы неправильно обрабатываете параметр IVAOTOKEN, вызывая проблемы, возможно, создавая искаженный словарь. Может быть, ваши параметры должны выглядеть следующим образом:

let parameters : [String:Any] = [ 
     "api_key": "ivaomobileapp", 
     "function": "login", 
     "IVAOTOKEN": Token 
] 

Alamofire добавит кавычки вокруг переменной Token, как это строка. Результат должен быть, что следующий отправляется на сервер:

{ 
    "api_key": "ivaomobileapp", 
    "function": "login", 
    "IVAOTOKEN": "TOKENVALUE" 
} 
+0

У меня проблема с отправкой параметра api_key, в запросе CURL это выглядит так: api_key = ivaomobileapp. Должен ли я помещать где-то = в Alamofire. Извините, я никогда не делал POST-запросов с помощью Alamofire :( – ctabuyo

+0

Ну, вы буквально используете значение 'ivaomobileapp' для параметра' api_key'? Я бы подумал, что ключ выглядел бы фактически несколько иначе. Может быть, hash. В любом случае знак '=' не должен быть частью ключа параметра. Alamofire преобразует ваши параметры в действительный JSON и таким образом добавит знак '=' между ключом и значением. –

+0

да Я буквально использую это Значение – ctabuyo

0

Ответ от сервера не является допустимым JSON попробуйте использовать responseString, responseData или response, чтобы выяснить, в чем дело.

+0

Я не понимаю, что вы имеете в виду. Я попытался перейти на responseData, то же самое. – ctabuyo

+0

my означает, что данные на стороне сервера недействительны JSON – Ram

+0

Что я могу сделать, чтобы понять это? – ctabuyo