Почему может происходить ошибка при отправке POST JSON ?

json

#1

Пытаюсь отправить данные на сервер, но получаю ошибку 406.

Ожидаемый JSON на сервере:
JSON для передачи:

{
  "title": «[ANIMAL_NAME]",
  "status": "1",
  "name": "[NAME]",
  "type": «animal»,
  "field_animal_color": {
    "und": {"tid": «[ANIMAL_COLOR_TID]"}
  },
  "field_animal_about": {
    "und": [{"value": «[ANIMAL_ABOUT]"}]
  },
  "field_animal_birth_date": {
    "und": [{
      "value": {
        "day": "[DAY]",
        "month": "[MONTH]",
        "year": "[YEAR]",
        "hour": "00",
        "minute": "00",
        "second": "00"
      }
    }]
  },
  "field_animal_image": {
    "und": [{"fid": "[FID]"}]
  }
}

Как я раскладываю параметры для передачи:

let img = #imageLiteral(resourceName: "white")
        let imageData  = UIImageJPEGRepresentation(img, 1.0)!
        let fileContent = imageData.base64EncodedString(options: .lineLength64Characters)
        
        let image2 = ["fid": fileContent]
        let image = ["und": image2]
        
        let date3 = ["day":"Sunday", "month":"June", "year":"2018",
                    "hour":"14","minute":"43","second":"48"]
        let date2 = ["value":date3]
        let date = ["und":date2]
        
        let color3  = ["99"]
        let color2 = ["tid":color3]
        let color = ["und":color2]
        
        let about3 = ["Информация о животном"]
        let about2 = ["value":about3]
        let about = ["und":about2]
        
        let animal = ["Animal"]
        let parameters =
            ["title"                 : animal,
             "status"               : "1",
             "name"                 : animal,
             "type"                 : "animal",
             "field_dino_color"     : color,
             "field_dino_about"     : about,
             "field_dino_birth_date": date,
             "field_dito_image"     : image
            ] as [String : Any]

Но даже если я просто передам только это:

let parameters =  ["title"                 : animal]

Все равно произойдет ошибка.


#2

Как я уже говорил ранее, с таким backand’ом вам будет сложно работать.
Тут нужно смотреть это дело на сервере, что там приходит.


#3

Не совсем понял что надо смотреть.

Я знаю, что сервер от меня ждёт ( это я в самом верху вставил ). А вот чего он даже самое поверхностное значение не принимает я не пойму…

И ошибка более подробно через .localizedDescription не ловится.


#4

Я вот это имел в виду. Это не нормальный JSON, таких кавычек не должно быть.
Дебажить нужно на сервере, смотреть доходит ли до нужного метода запрос, какие данные туда приходят, в каком месте прекращается обработка.

  • проверить, все ли заголовки отправляете с запросом.

Тут нужно плотно работать с сервером. Если у вас доступа к коду нет, это будет игра в угадайку.