首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS/IBM /Swift:使用AlamoFire向Watson发布

iOS/IBM /Swift:使用AlamoFire向Watson发布
EN

Stack Overflow用户
提问于 2018-05-30 17:37:59
回答 1查看 350关注 0票数 1

我试图用下面的代码使用AlamoFire发布到沃森声调分析器API。它不断得到401错误,这显然意味着授权失败。但是,相同的userid/密码信息可以在curl请求中找到。因此,问题不在于用户I/密码,而在于我是如何形成AlamoFire请求的。

代码语言:javascript
运行
复制
 func postToWatson () {
        print("post to watson called")
        let url: String =  "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2016-05-19"
        let message = "All you need is love"
        var parameters = [
           "username":"my-lengthy-username",
            "password":"my-ugly-password"]
        parameters["text"] = message
        Alamofire.request(url, parameters: parameters)
            .responseJSON { response in
                print(response.request)
                print(response.response)
                print(response.result)
        }
    }

下面是我通过上面的打印命令从API中得到的信息:

代码语言:javascript
运行
复制
Optional(https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2016-05-19&password=xxxxxx&text=All%20you%20need%20is%20love&username=xxxxxxxxxxxx)
Optional(<NSHTTPURLResponse: 0x1740396a0> { URL: https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2016-05-19&password=xxxxxx&text=All%20you%20need%20is%20love&username=xxxxxxxxxxxx } { status code: 401, headers {
    Connection = close;
    "Content-Encoding" = gzip;
    Date = "Wed, 30 May 2018 17:23:30 GMT";
    "Strict-Transport-Security" = "max-age=31536000;";
    "Www-Authenticate" = "Basic realm=\"IBM Watson Gateway(Log-in)\"";
    "X-Backside-Transport" = "OK OK,FAIL FAIL";
    "X-DP-Transit-ID" = "gateway02-1020566241";
    "X-DP-Watson-Tran-ID" = "gateway02-1020566241";
    "X-Global-Transaction-ID" = ffea405d5b0ede123cd49ae1;
    "x-dp-local-file" = true;
} })
SUCCESS

上面的代码有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 18:01:57

我没有使用AlamoFire,但是查看它们的用于请求身份验证的文档与您的代码是不同的。

用户名/密码不是常规参数,但您需要将它们作为身份验证头传递。医生有样本。这将解释401,因为没有认证传递给沃森。

没有经过测试,但是像这样的东西应该能起作用:

代码语言:javascript
运行
复制
 Alamofire.request(url)
    .authenticate(user: username, password: password)
    .responseJSON { response in
                print(response.request)
                print(response.response)
                print(response.result)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50610581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档