POST-запрос Alamofire с вложенными параметрами ничего не возвращает - PullRequest
0 голосов
/ 13 сентября 2018

Здравствуйте. Я пытаюсь использовать Alamofire для своих HTTP-запросов. Он работает с параметрами, в которые не входит ни один вложенный параметр. Обычно мой URL-адрес работает с Google Chrome.

http://111.222.33.4:12345/my_server/dispatch?cmd=ext_getReferanceData&jp=%7b%22rfName%22:%22RF_ABC%22%7d&token=123 и расшифрованная версия вышеприведенного URL -

http://111.222.33.4:12345/my_server/dispatch?cmd=ext_getReferanceData&jp={"rfName":"RF_ABC"}&token=123

Отлично работает, когда я вставляю его в любой браузер. Однако, когда я пытаюсь отправить следующий почтовый запрос с Alamofire

    let parameters3: [String: Any] = [
        "cmd": "ext_getReferanceData",
        "jp": [
            "rfName": "RF_ABC"
        ],
        "token": "123"
    ]

    Alamofire.request("http://111.222.33.4:12345/my_server/dispatch", method: .get, parameters: parameters3, encoding: JSONEncoding.default).responseJSON { (response) in
    }

Возвращается

FAILURE: responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)

Что может быть причиной того, что я отправляю неверные параметры или что-то упускаю?

Редактировать: Я также проверил другие вопросы об ошибке, но проблема связана с параметрами, которые я пытаюсь отправить, потому что есть "и {в параметрах, но я не смог отправить в запросе.

1 Ответ

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

рассматривали ли вы печать отправленного ответа и подтверждение того, что это действительно то, что вы пытаетесь отправить?

Вы можете сделать несколько вещей, чтобы улучшить

  1. Сделайте метод .post
  2. Попробуйте использовать .validate () для повышения надежности

То, как я это делаю, выглядит примерно так:

let submissionURL = URL(string: "https://blablabla.com/script.php")
 sendAlamofireRequest(submissionURL: submissionURL!, parameters: parameters, chosenTrackerStr: chosenTrackerString) //function call

 //function declaration
func sendAlamofireRequest(submissionURL: URL, parameters: Parameters, chosenTrackerStr: String){

    Alamofire.request(submissionURL, method: .post, parameters: parameters, encoding: JSONEncoding.default).validate().responseString() { (response) in
         //actual code goes here
    }
 }

Возможно, попробуйтепоэкспериментировать с запросом alamofire и проверить его документацию, чтобы увидеть предложенный подход:)

...