Получение нулевого ответа с помощью Alamofire - PullRequest
1 голос
/ 10 января 2020
{
  "vUserList": [
    {
      "firstName": "Kate",
      "lastName": "Bell",
      "email": "katebell@mac.com"
    },
    {
      "lastName": "Higgins",
      "firstName": "Daniel",
      "email": "dhiggins@mac.com"
    },
    {
      "email": "JohnAppleseed@mac.com",
      "firstName": "John",
      "lastName": "Appleseed"
    },
    {
      "lastName": "Haro",
      "firstName": "Anna",
      "email": "annaharo@mac.com"
    },
    {
      "email": "hankzakroff@mac.com",
      "firstName": "Hank",
      "lastName": "Zakroff"
    }
  ]
}

Это параметры запроса, которые мне нужно отправить на сервер.

func getContactsParameters() -> [String : Any] {
        return [Keys.vUserList : arrContacts]
    }

var headers = [
                Keys.XAPIKEY: "5dik8fo5yecc25bfcc562724dd674bde5fh5ju8y"
            ]

Alamofire.request("urlString", method: .post, parameters: getContactsParameters(), encoding: JSONEncoding.default, headers: headers).responseJSON { response in
                print(response)
}

getContactsParameters () журнал консоли, как показано ниже, enter image description here В ответ, Я получаю Null с кодом успеха.

Я говорил с бэкэндами, они говорят, что если я не получу этот ключ "vUserList", то вы можете получить нулевой ответ. Но я дважды проверил орфографию и все. Другой сценарий состоит в том, что, говорят, если мы не получим запрос в правильном json, то вы можете получить нулевой ответ.

Я пробовал много разных решений, но ни одно из них не работает. : (

Любая помощь приветствуется!

Вот я прилагаю, скриншот почтальона. В почтальоне работает нормально. enter image description here

Ответы [ 2 ]

2 голосов
/ 10 января 2020

Попробуйте передать JSON строковый объект массива контактов в параметры API.

let arrOfUserList : [[String : AnyObject]] = [
            ["firstName":"Kate" as AnyObject,"lastName":"Bell" as AnyObject,"email":"katebell@mac.com" as AnyObject],
            ["firstName":"Daniel" as AnyObject,"lastName":"Higgins" as AnyObject,"email":"dhiggins@mac.com" as AnyObject]
        ]

do {
    let data = try JSONSerialization.data(withJSONObject: arrOfUserList, options: [])
    let jsonString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)

     if jsonString != nil {

        let paramsContact = [Keys.vUserList : jsonString]

            //Do your API calling code here
     }
 } catch {
      print(error.localizedDescription)
 }

Надеюсь, он будет работать для вас.

1 голос
/ 10 января 2020

После проверки вашего почтальона

Пожалуйста, добавьте заголовок в ваш запрос

let headers = [
    "Content-Type": "application/x-www-form-urlencoded"
]

Если он не работает, то

URLEncoding() или URLEncoding.httpBody или URLEncoding.default на месте JSONEncoding.default

...