• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

IOS - Swift 4.0 - 使用 Alamofire 的基本访问身份验证 -

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:29:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当我需要进行 POST 调用时,我正在 Swift 4 i 中做一个应用程序,例如带有 header 和带有参数的主体的“基本访问身份验证”,它对我不起作用。

基本上我想模拟这个调用,返回一个 200,但它给了我:

"responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.})) "

API 网址是:

https://gist.github.com/juaniiton1/3a3e422ed99de22f3f3686bb3b7788d7

该部分是“在经过身份验证的用户投资组合中存储新交易”。

在这里,我在 Alamofire (4.7.3) 的帮助下传递了模拟请求“在授权的用户投资组合中存储新交易”的代码。

我遵循的步骤如下:

  • 我所做的是,将你的“用户名”和“密码”数据编码 给我base64。

  • 然后我将Stirng类型的日期格式化为Date类型(ISO类型)。

  • 在我为数据创建字典之后

  • 最后我创建了请求,将以上所有内容放在一起。

  • 此外,在 Xcode 中,我还有 TransportSecurity 来制作 请求“https”

这里我留下代码:

导入基础 导入 UIKit 进口 Alamofire

类 View Controller :UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    //URL
    let url = URL(string: "https://test.cryptojet.io/coins/portfolio")!

    // credentials encoded in base64
    let username = "[email protected]"
    let password = "secret"
    let loginData = String(format: "%@:%@", username, password).data(using: String.Encoding.utf8)!
    let base64LoginData = loginData.base64EncodedString()
    let headers = ["Authorization" : "Basic \(base64LoginData)",
                   "Content-Type": "application/json"]

    //Prepare date - Data UTC to ISO
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
    let dataSting = "2016-06-05T16:56:57.019+01:00"
    let dateISO = dateFormatter.date(from: dataSting)

    //Prepare paramsBody -> tot Data
    let paramsBody: [String: Any] = ["coin_id": 2,
                                     "amount": -2.2183,
                                     "price_usd": 675.982,
                                     "traded_at": dateISO!]

    //Request
    Alamofire.request(url, method: .post,parameters: paramsBody, encoding: URLEncoding.default, headers: headers).responseJSON { response in
        switch response.result {
        case .success:
            guard let json = response.result.value as? [String: Any],
                let data = json["trade"] as? [String: Any] else {
                    return
            }
            print(data)
        case .failure(let error):
            print(error)
        }
    }

}

你能告诉我这个与服务器的 POST 身份验证调用有什么问题吗?



Best Answer-推荐答案


我试图向您的网址发出请求,但您的请求的响应似乎不是 JSON:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta name="robots" content="noindex,nofollow" />
        <style>            body { background-color: #F9F9F9; color: #222; font: 14px/1.4 Helvetica, Arial, sans-serif; margin: 0; padding-bottom: 45px; }

            a { cursor: pointer; text-decoration: none; }
            a:hover { text-decoration: underline; }
...

关于IOS - Swift 4.0 - 使用 Alamofire 的基本访问身份验证 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000469/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap