【问题标题】:Equivalent Swift NSURLSession or Alamofire Curl post等效的 Swift NSURLSession 或 Alamofire Curl 帖子
【发布时间】: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 而不是标题中。

标签: swift authentication curl alamofire nsurlsession


【解决方案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 很难阅读。
猜你喜欢
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
相关资源
最近更新 更多