Кодирование параметров JSON в Alamofire завершается неудачно - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь сделать запрос к упругому поиску, используя alamofire и swift 4. Я пробовал все типы кодирования для параметров json, и запросы все еще истекают.Если я поставлю nil paramters, ответ получится хорошо, но я хочу построить некоторые параметры запроса.

Я попытался создать свои параметры следующим образом:

    let jsonString = "{ \"query\": { \"multi_match\": { \"query\": \"param1 param2 alabala etc\", \"fields\": [\"title\", \"description\", \"category\"], \"fuzziness\": 5 } } }"
        let data = jsonString.data(using: .utf8)
        do {
            let params = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]
            print("ParamsJSON: \(params)")
        } catch {
            print(error)
        }

И также так:

   let params1 = [
        "query": [
            "multiMatch": [
                "query" : "param1 param2 alabala etc",
                "fields" : ["title*2, description*1.5"],
                "fuzziness" : 5
            ]
        ]
    ]

Также мой запрос alamofire находится здесь:

    let headers = [
        "Content-Type": "application/json"
    ]
    let url = "someurl"

    let request = Alamofire.request(url, method: .get, parameters: params1, encoding: JSONEncoding.default, headers: headers)
    .authenticate(user: "user", password: "pass")
    .responseJSON { response in
        if let data = response.data{
            do{
                let json = try JSON(data: data)
                completion(json)
            } catch {

            }

        }
    }

    debugPrint(request)

URL и аутентификация работают, потому что запрос работает без отправки ему параметров.Только когда я отправляю параметры, alamofire возвращает ошибку истечения времени ожидания запроса.

Кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 30 сентября 2018

Для всех, кто будет искать ответ на этот вопрос.Причина этого состояла в том, что запросы GET обычно не имеют тела (он работает с cURL и некоторым сервером для тестирования).

Поэтому ответ таков: вам нужно изменить запрос с .get на .post.

...