Почему кодировка параметров Alamofire заключена в скобки?

При использовании Alamofire

Возникла проблема при доставке параметров с помощью GET!
  • При передаче параметров скобки автоматически кодируются, и вам необходимо передать на сервер незакодированные значения.

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

   
     let url = "\(urlAIString)/Url-Space/position=[\(userLocation)]"
     AF.request(url,method: .get){
            ....
     }

Я хочу, чтобы скобки доставлялись на сервер без кодирования. Однако я испытываю неудобства, поскольку скобки закодированы в base64 и доставляются

Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Поскольку сейчас написано, трудно точно сказать, о чем вы спрашиваете.

Community 01.05.2024 19:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я хочу, чтобы скобки доставлялись на сервер без кодирования.

Это не URL-адрес, поэтому используемый вами протокол не является HTTP. Возвращаясь к RFC 1738, спецификация ясна:

Таким образом, только буквенно-цифровые символы, специальные символы "$-_.+!*'()," и могут использоваться зарезервированные символы, используемые в своих зарезервированных целях. незакодированный в URL-адресе.

Хотя вы (и служба, с которой вы работаете) можете определить некоторый протокол, отличный от HTTP, который очень похож на HTTP, но также поддерживает GET-подобные запросы, которые не являются URL-адресами, это не протокол, который поддерживает URLSession (на который опирается Almofire). . Вам предстоит создать собственный сетевой транспорт для взаимодействия с этим сервисом. Как правило, вам придется построить это поверх чего-то вроде структуры Network. Обычно это непростая работа, поэтому обычно проще заставить вашу службу использовать стандартный протокол, такой как HTTP, и правильно закодированные URL-адреса, а не изобретать собственный протокол, подобный тому, который вы описываете.

Если вы создаете собственный протокол для связи с этим сервисом, посмотрите NWProtocolTLS . Если ваш сервис очень похож на HTTP/1.0 и вы не используете никаких дополнительных функций, не так уж сложно построить его с нуля поверх TLS-соединения . (TLS требует много работы, поэтому позвольте системе сделать это за вас.) Простой HTTP можно написать и проанализировать вручную.

Для интеграции этого в Alamofire потребуется URLProtocol, чтобы взять на себя транспортный уровень. Это не тонна кода, но его довольно сложно настроить. Если вы создаете для этого сетевую службу и у вас возникли проблемы с URLProtocol, задайте более конкретный вопрос по этому поводу, когда доберетесь туда.

Вместо этого я рекомендую исправить ваш сервер. Обычно это проще.

Спасибо. Услышав ваш ответ, я спросил менеджера сервера, как мне удалось решить проблему, и хотел бы выразить искреннюю признательность.

Soom 04.05.2024 15:00

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