Alamofire Недопустимое значение для символа 0 | Swift 4 - PullRequest
0 голосов
/ 08 ноября 2018

Итак, я периодически получаю эту ошибку:

"Недопустимое значение для символа 0."

Я исчерпал все возможности для отладки этого. По сути, API работает в Postman нормально, но ужасно терпит неудачу из-за кода. Почтальон настроен локально, поэтому я не могу поделиться им здесь. Во всяком случае, это мой код:

        let headers = ["Content-Type": "application/json",
                       "Accept": "application/json"]
        let params = ["userId":"98", "candidateId":"4"]

        Alamofire.request(url, method: .post, parameters: params, encoding:
            JSONEncoding.default, headers: headers).response { response in

                if let data = response.data {
                    do {
                        let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as? [String: Any]
                        completion(json , nil)
                    } catch {
                        completion(nil, response.error)
                    }
                }else{
                    completion(nil, response.error)
                }
        }

Я пробовал responseString, responseJSON & response и JSONSerialization. Я использовал опции с .allowFragments, .mutableContainers & .mutableLeaves, но безрезультатно. Я даже пытался присвоить ему заголовки, хотя вызов Почтальона не включает заголовки, но опять ужасно провалился Что мне делать, пожалуйста, помогите. Ниже приведен снимок объекта ответа:

enter image description here

Это responseString , которое я получаю после того, как я сделаю это:

String(data: data, encoding: .utf8)

и это ошибка при удалении .allowFragments:

Ошибка домена = NSCocoaErrorDomain Code = 3840 "JSON-текст не начался с массивом или объектом и опцией, позволяющей не устанавливать фрагменты. " UserInfo = {NSDebugDescription = текст JSON не начинался с массива или объект и опция, позволяющие не устанавливать фрагменты.}

ПОСТМАНСКИЙ ЗВОНОК ВЫЗОВА:

enter image description here

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

В моем случае:

Изменение заголовка типа контента с

 headers = [
        "Content-Type": "application/json",
        "Authorization" : "Token"
    ]

К

 headers    = [
            "Content-Type": "application/x-www-form-urlencoded",
            "Authorization" : "Token"
        ]

Работали!

0 голосов
/ 08 ноября 2018

Проблема с вашими заголовками

let headers = ["Content-Type": "application/json",
                "Accept-Type": "application/json"]

Accept-Type не является допустимым заголовком HTTP. Что вам нужно, это Accept

let headers = ["Content-Type": "application/json",
                     "Accept": "application/json"]
...