等效的 Swift NSURLSession 或 Alamofire Curl 帖子
Posted
技术标签:
【中文标题】等效的 Swift NSURLSession 或 Alamofire Curl 帖子【英文标题】:Equivalent Swift NSURLSession or Alamofire Curl post 【发布时间】:2016-05-24 23:17:46 【问题描述】:我的这个 curl 帖子可以正常工作,但是对于我的一生,我无法让它与 NSURLSession 或 Alamofire 一起工作。返回正常的卷曲是:
curl https://api.truevault.com/v1/vaults/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXX/blobs \
-X POST \
-u yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy: \
--form "file=@foo.pdf" \
-H "Content-Type:multipart/form-data"
无论我使用哪种 curl 或 NSURLSession 变体,我都会收到 401 错误,但使用 curl 可以成功完成!请帮忙!谢谢!
当前的 ALAMOFIRE 尝试
let headers = ["Authorization": Config.trueVaultKey, "Content-Type": "multipart/form-data"]
Alamofire.upload(
Alamofire.Method.POST,
url!,
headers: headers,
multipartFormData: multipartFormData in
multipartFormData.appendBodyPart(
data: dat!,
name: "file",
fileName: "license.png",
mimeType: "image/png"
)
,
encodingCompletion: encodingResult in
switch encodingResult
case .Success(let upload, _, _):
upload.responseString response in
//JSON = response.result.value! as String
debugPrint(response)
print("\n\n\nREQUEST HEADER: \(response.request!.allHTTPHeaderFields!)")
print("\n\n\nREQUEST BODY: \(response.request!.HTTPBody)")
print("\n\n\nREQUEST BODY STREAM: \(response.request!.HTTPBodyStream)")
case .Failure(let encodingError):
print(encodingError)
)
【问题讨论】:
你能发布你的 swift 代码吗? 使用 swift 代码更新 我认为你不需要设置标题,多部分会自动添加。不知道什么是授权,但我在你的 cURL 中看不到它。是 XXXX-XXXX-XXXX 吗?所以它应该出现在 URL 而不是标题中。 【参考方案1】:尝试像这样构建您的 URL:
let userAuth = "username:password" // credential
let url = "https://\(userAuth)@api.truevault.com/v1/vaults/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXX/blobs" // notice the at(@) sign
不要设置标题,它们会自动设置。
【讨论】:
谢谢,但这也不起作用......仍然得到 401 你能用你调用的 URL 更新你的代码吗?如果有任何凭证,让它们显示为“用户名”、“密码”。拥有 xxxx 和 yyyy 很难阅读。以上是关于等效的 Swift NSURLSession 或 Alamofire Curl 帖子的主要内容,如果未能解决你的问题,请参考以下文章
带有 NSURLSession 的 Swift 中的 HTTP 请求
Swift 中这些 NSURLSession 方法的代表是啥?
swift NSURLSession_Example.swift