Как найти другой способ использования «&» в почтовом запросе в Swift - PullRequest
0 голосов
/ 09 февраля 2019

Я делаю пост-HTTP-запрос в swift 4.2, и в одну из моих строк я помещаю параметры, содержащие «&», но, очевидно, после этого символа запросы обрезаются.Я подумал о замене каждого символа «&» уникальным заполнителем и преобразовал его обратно в PHP.

Но есть ли более элегантный или простой способ сделать это?

Ответы [ 5 ]

0 голосов
/ 09 февраля 2019

Вы, вероятно, должны минимизировать, сколько ручного процента уходит от вас.Вы можете, например, использовать URLComponents для создания своего URL-адреса, и проценты его избегают:

guard var components = URLComponents(string: "http://example.com") else { return }
components.queryItems = [URLQueryItem(name: "foo", value: "bar&baz")]
let url = components.url

В результате:

http://example.com? foo = bar% 26baz

0 голосов
/ 09 февраля 2019

Амперсанд, а также несколько других символов необходимо кодировать, если они находятся в параметре запроса, в противном случае они могут быть распознаны как какой-либо разделитель.

Вы можете кодировать строку длязапросить параметр в Swift так:

let value = string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

let urlString = "https://example.com/?query=\(value)" 

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

0 голосов
/ 09 февраля 2019

URL кодирует ваши данные (и декодирует их, когда вам нужно их использовать), что превращает амперсанд в% 26, что останавливает его обрезание в вашем запросе GET.

0 голосов
/ 09 февраля 2019

PHP включает функции urlencode() и urldecode(), а stift включает функцию .addingPercentEncoding.

Это означает, что вы можете заменить закодированной версией символа '&', равной '% 26', или использовать функцию swift

Тогда, когда вы получите это значение, вы можете использовать urldecode( $escapedString ), или просто замените «% 26» на «&», или просто извлеките значения прямо из запроса с помощью $ _GET.

0 голосов
/ 09 февраля 2019

Вы могли бы заменить "&" на "% 26", и тогда это должно сработать:)

Все символы кодирования Precent: https://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...