curl和URLSession返回不同的数据

时间:2018-07-22 01:57:27

标签: ios swift bash curl command-line

所以我试图在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代码之间的差异?这不是授权问题,因为如果您编辑令牌,它将返回完全不同的结果。

卷曲中的幕后有什么事发生吗?

1 个答案:

答案 0 :(得分:0)

好的,我希望我能对为什么会这样有更多的答案,但是据我所知,curl和URLSession之间的请求的标头和正文大致相同,但是,由于这是一个安全的请求,我无法确定。

解决方案最终是用Alamofire发送发帖请求,我认为在某些情况下,除了使用起来更容易之外,它实际上可能会有所作为。

我仍然很好奇为什么交换框架在这里有所作为。