Обновление URL путем добавления элементов запроса URLComponent к строке

В настоящее время я занимаюсь разработкой опроса, в котором данные json анализируются в 3 различных тестах с несколькими вариантами ответов. Все JSON правильно проанализированы, и я могу пройти опрос и ответить на вопросы и т. Д. Теперь я нахожусь в точке, где мне нужно настроить оценку опроса. Способ, которым это нужно настроить, заключается в том, что у меня есть конечная точка URL-адреса, к которой мне нужно вызывать и добавлять данные. Когда я делаю это, результаты сохраняются на сервере SQL. Я никогда не делал этого раньше, и на основании исследований кажется, что мне нужно использовать URLCompenents. Если я ошибаюсь, пожалуйста, предложите лучший способ сделать это. Вот код, который у меня есть.

var urlComponents: URLComponents {

    let resultID = surveyQuestions.resultId
    print("\(String(describing: resultID))")

    let resultResponseID = surveyQuestions.questions[self.questionNumbers].surveyResultsResponseId
    print("\(String(describing: resultResponseID))")

    let questionIndex = questionNumbers
    print("\(String(describing: questionIndex))")

    var urlComponents = URLComponents()
    urlComponents.scheme = "https"
    urlComponents.host = "host.com"
    urlComponents.path = "/api/survey/update-response"

    urlComponents.queryItems = [
        URLQueryItem(name: "surveyResultsId", value: "\(String(describing: resultID))"),
        URLQueryItem(name: "surveyResultsResponseId", value: "\(String(describing: resultResponseID))"),
        URLQueryItem(name: "questions", value: "\(questionIndex)"),
        URLQueryItem(name: "selectedAnswer", value: "\(selectedAnswer)")

    ]

    let url = urlComponents.url

    print(url!.absoluteString as Any)

    return urlComponents
}

Когда я распечатываю это, он печатает эту ссылку "https:/host.com/api/survey/update-response? SurveyResultsId=301941&surveyResultsResponseId=nil&questions=0&selectedAnswer=0"

Кажется, это работает правильно. Теперь мне нужно отправить этот результат с помощью GET, и для каждого выбранного ответа мне нужно обновить questionIndex и selectedAnswer URLQueryItem. Куда мне идти отсюда? Я пробовал это, но получаю ошибку "Недопустимое значение вокруг символа 0." Я верю, потому что это говорит о том, что результат, который я получаю, не является json

func fetchData(completion: @escaping (Bool) -> Void, onError: @escaping (NSError) -> Void) {

    let urlComponents = self.urlComponents

    guard let urlResponse = urlComponents.url else { return }

    let task = URLSession.shared.dataTask(with: urlResponse) { (data, response, error) in
        guard let data = data else { return }
        do {
            if (try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:Any]) != nil{
                completion(true)
            }
        } catch let err {
            print("Err", err)
        }
    }
    task.resume()
}

и я называю это используя:

fetchData(completion: { (successful) in
        print(successful)
    }) { (error) in
        print(error.domain)
    }

Буду признателен за любую оказанную помощь.

Спасибо

0 ответов

Другие вопросы по тегам