【问题标题】:Making a GET query with spaces使用空格进行 GET 查询
【发布时间】:2019-05-11 07:47:16
【问题描述】:

我正在用 Swift 4.2 编写一个 iOS 应用。我正在使用Moya Networking

我必须使用以下 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'&props=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%20155695578​​2%20AND%20quitID%3D%276264A540-84F3-4D09-FF8D-00D4C94E9D00%27%20AND%20ownerId%20%3D%27DB64B524-8973-9357-FF67-3C69B6CD1 p>

如何使用空格进行 GET 查询?

【问题讨论】:

    标签: ios swift moya


    【解决方案1】:

    网址字符串从不包含空格Check Here

    【讨论】:

      【解决方案2】:

      您的查询确实包含空格。它们刚刚被百分比编码或也称为URL编码。这是一种在 URL 中包含不合法或与 URL 结构冲突的字符的机制。在Wikipedia's percent-encoding article 上了解更多信息。

      一个简单的例子是包含& 的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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-16
        相关资源
        最近更新 更多