Alamofire 编码无效URL
Posted
技术标签:
【中文标题】Alamofire 编码无效URL【英文标题】:Alamofire encoding invalidURL 【发布时间】:2017-09-26 21:06:50 【问题描述】:大家下午好,这里的新手正在尝试学习 Swift / Alamofire。我已经为此苦苦挣扎了将近两天,准备继续前进。
我的 URL 似乎已更正,但在发出请求时出现错误。在查看 Xcode 调试日志时,看起来我的单引号在发送请求时被转义了。
let owner : String = "me@corp.local"
func getDeploymentsByOwner(token: String, owner: String, success: @escaping (JSON) -> Void, failure: @escaping (Error) -> Void)
let headers = [
"Authorization": "Bearer \(token)",
]
print(owner)
let url = "https://corp.local?$filter=owners/ref eq '\(owner)'"
// created URL is https://corp.local?$filter=owners/ref eq 'me@corp.local'
Alamofire.request(url, method: .get, encoding: URLEncoding.queryString, headers: headers).responseJSON (responseObject) -> Void in
if responseObject.result.isSuccess
let resJSON = JSON(responseObject.result.value!)
success(resJSON)
if responseObject.result.isFailure
let error = responseObject.result.error
print(error)
failure(error!)
我的错误信息如下所示 // Xocde 调试错误
Optional(Alamofire.AFError.invalidURL("https//:corp.local?$filter=owners/ref eq \'me@corp.local\'"))
invalidURL(https://corp.local?$filter=owners/ref eq \'me@corp.local\'")
我可以不使用 $filter 获取所有项目,因此只要省略过滤器,请求就可以工作。
// Postman 使用生成的 URL,但带有反斜杠 () 的 URL 不会
【问题讨论】:
尝试编码网址 感谢您的反馈。你是怎么编码的? 你能在哪里解决这个问题? 【参考方案1】:感谢您的回复,很遗憾没有成功。整个 URL 被破坏了,包括主机名。但它确实给了我一个起点来解决这个问题,谢谢。工作代码如下
let url = "https://corp.local?$filter=owners/ref eq '\(owner)'"
let encodedUrl = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
【讨论】:
【参考方案2】:请检查:
let url = "https//:corp.local?$filter=owners/ref eq \'me@corp.local\'"
let urlEncoded = url.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(urlEncoded!)
【讨论】:
以上是关于Alamofire 编码无效URL的主要内容,如果未能解决你的问题,请参考以下文章
使用 Alamofire 的无效证书、表单数据和 HTTP 标头数据
在 Alamofire 上使用 DisableEvaluation 信任无效证书