Создание запроса GET с пробелами - PullRequest
0 голосов
/ 11 мая 2019

Я пишу приложение для iOS в Swift 4.2. Я использую Моя Сеть .

Я должен использовать ниже GET запрос для получения данных с сервера:

https://api.backendless.com/AABE5C4B-AA58-955C-FF16-27B64A185300/46FDFF59-CF95-B699-FFF5-83B681610700/data/quilt_detail?where=addedDate>1555515000 И quitID = '9FE17AA3-E182-6DFA-FF1D-52B33B2B8D00' И OwnerId = 'AC1CB90D-CF3E-7243-FF87-9E408D68E800' & реквизита = sleepHours, addedDay, addedDate

Мой код:

var task: Task {
        switch self{
        case .getTrends(let quiltID, let addedDate, let ownerId):
            return .requestParameters(parameters: ["where":"addedDate > \(addedDate) AND quitID='\(quiltID)' AND ownerId ='\(ownerId)'", "props":"sleepHours,addedDay,addedDate"], encoding: URLEncoding.default)
        }
    }

Но выдайте его при выполнении ниже: GET Запрос:

https://api.backendless.com/AABE5C4B-AA58-955C-FF16-27B64A185300/46FDFF59-CF95-B699-FFF5-83B681610700/data/quilt_detail?props=sleepHours%2CaddedDay%2CaddedDate&where=addedDate%20%3E%201556955782%20AND%20quitID%3D%276264A540-84F3-4D09-FF8D-00D4C94E9D00%27%20AND%20ownerId%20%3D%27DB64B524-8973-9357-FF67-3C69B6CD1C00%27

Вместо:

добавленоДата> 1555515000 И quitID = '9FE17AA3-E182-6DFA-FF1D-52B33B2B8D00' И ownerId = 'AC1CB90D-CF3E-7243-FF87-9E408D68E800'

его изготовление:

addedDate% 20% 3E% 201556955782% 20and% 20quitID% 3D% 276264A540-84F3-4D09-FF8D-00D4C94E9D00% 27% 20and% 20ownerId% 20% 3D% 27DB64B524-8973-9357-FF67-3C69B6CD1C00% 27 * 1 036 *

Как сделать запрос GET с пробелами?

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

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

Простым примером будет значение параметра GET, содержащее &.Вы должны закодировать его, иначе значение после того, как он начнет новый параметр.

Сервер, получающий запрос, увидит отправленные вами исходные данные.Вы можете проверить это в консоли вашего браузера с помощью decodeURIComponent:

decodeURIComponent('addedDate%20%3E%201556955782%20AND%20quitID%3D%276264A540-84F3-4D09-FF8D-00D4C94E9D00%27%20AND%20ownerId%20%3D%27DB64B524-8973-9357-FF67-3C69B6CD1C00%27')

Это возвращает:

addedDate > 1556955782 AND quitID='6264A540-84F3-4D09-FF8D-00D4C94E9D00' AND ownerId ='DB64B524-8973-9357-FF67-3C69B6CD1C00'
0 голосов
/ 11 мая 2019

В строке URL никогда не бывает пробелов Проверьте здесь

...