所以我试图在swift内部复制一个CXCallDirectoryExtensionContext
终端呼叫。
下面是我的命令
curl
它大致返回
curl -v https://api.robinhood.com/orders/ -H "Accept: application/json" -H "Authorization: Token 111111MYTOKEN11111"
这是我尝试用来复制它的快速代码:
{"previous":null,"results":[{"key":"value","key2":"value2","key3":"value3"},{...},{...},...],"next":null}
很遗憾,这会打印出 var request = NSMutableURLRequest(url: URL(string: "https://api.robinhood.com/orders/")!) as URLRequest
request.httpMethod = "GET"
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("Token 111MYTOKEN111", forHTTPHeaderField: "Authorization")
let _ = URLSession.shared.dataTask(with: request, completionHandler: {(data, response, error) in
if let data = data {
if let str = String(data: data, encoding: .utf8) as String? {
print(str)
}
}
})
是什么原因导致在终端中运行的命令与我的swift代码之间的差异?这不是授权问题,因为如果您编辑令牌,它将返回完全不同的结果。
卷曲中的幕后有什么事发生吗?
答案 0 :(得分:0)
好的,我希望我能对为什么会这样有更多的答案,但是据我所知,curl和URLSession之间的请求的标头和正文大致相同,但是,由于这是一个安全的请求,我无法确定。
解决方案最终是用Alamofire发送发帖请求,我认为在某些情况下,除了使用起来更容易之外,它实际上可能会有所作为。
我仍然很好奇为什么交换框架在这里有所作为。