问问题+交朋友: Xcode 7 + Swift 2.2 下POST调用Restful API失败,求助 ...

[复制链接]
266 1
我使用Xcode 7 + Swift 2.2希望实现如下功能:

- POST调用https://api.example.com/token
- 发送请求时需要在Header中指定"Content-Type" : "application/x-www-form-urlencoded"
- 请求时需要在body中提供如下键值:
> "grant_type" : "password",
> "username" : "123456@qq.com",
> "password" : "averygoodpassword"

以下是我用Alamofire实现的代码:

func GetToken() {

let params = [
"grant_type" : "password",
"username" : "123456@qq.com",
"password" : "averygoodpassword"
]

let headers = [
"Content-Type" : "application/x-www-form-urlencoded"
]

request(.POST, "https://api.example.com/token",
parameters: params,
headers: headers,
encoding: .JSON)
.responseJSON { request, response, result in

print (request)
print (response?.description)
print (result)

switch result {
case .Success(let JSON):
print("Success with JSON: (JSON)")

case .Failure(let data, let error):
print("Request failed with error: (error)")

if let data = data {
print("Response data: (NSString(data: data, encoding: NSUTF8StringEncoding)!)")
}
}

}

}


运行后,服务器端报400错误,在Xcode的Output窗口有如下输出:

Optional( { URL: https://api.example.com/token })
Optional(" { URL: https://api.example.com/token } { status code: 400, headers {n "Access-Control-Allow-Headers" = "Content-Type";n "Access-Control-Allow-Methods" = "GET, POST, PUT, DELETE, OPTIONS";n "Access-Control-Allow-Origin" = "*";n "Cache-Control" = "no-cache";n "Content-Length" = 34;n "Content-Type" = "application/json;charset=UTF-8";n Date = "Fri, 30 Sep 2016 10:30:31 GMT";n Expires = "-1";n Pragma = "no-cache";n Server = "Microsoft-IIS/8.5";n "X-Powered-By" = "ASP.NET";n} }")
SUCCESS
Success with JSON: {
error = "unsupported_grant_type";
}
其中error = "unsupported_grant_type";意味着body中的grant_type没有被服务器接收到

目前仍没有找到问题的原因和解决方法,在此向有经验的人求教,先行谢过!

举报 使用道具

回复

1 个评论

KiromanRig  注册会员  发表于 2019-3-12 09:23:12  | 显示全部楼层
我使用Xcode 7 + Swift 2.2希望实现如下功能:

- POST调用https://api.example.com/token
- 发送请求时需要在Header中指定"Content-Type" : "application/x-www-form-urlencoded"
- 请求时需要在body中提供如下键值:
              > "grant_type" : "password",
              > "username" : "123456@qq.com",
              > "password" : "averygoodpassword"

以下是我用Alamofire实现的代码:

    func GetToken() {
        
        let params = [
            "grant_type" : "password",
            "username" : "123456@qq.com",
            "password" : "averygoodpassword"
        ]
        
        let headers = [
            "Content-Type" : "application/x-www-form-urlencoded"
        ]
        
        request(.POST, "https://api.example.com/token",
            parameters: params,
            headers: headers,
            encoding: .JSON)
            .responseJSON { request, response, result in
               
                print (request)
                print (response?.description)
                print (result)
               
                switch result {
                case .Success(let JSON):
                    print("Success with JSON: (JSON)")
                    
                case .Failure(let data, let error):
                    print("Request failed with error: (error)")
                    
                    if let data = data {
                        print("Response data: (NSString(data: data, encoding: NSUTF8StringEncoding)!)")
                    }
                }
               
        }
        
    }


运行后,服务器端报400错误,在Xcode的Output窗口有如下输出:

Optional(<NSMutableURLRequest: 0x79652c10> { URL: https://api.example.com/token })
Optional("<NSHTTPURLResponse: 0x7a853720> { URL: https://api.example.com/token } { status code: 400, headers {n    "Access-Control-Allow-Headers" = "Content-Type";n    "Access-Control-Allow-Methods" = "GET, POST, PUT, DELETE, OPTIONS";n    "Access-Control-Allow-Origin" = "*";n    "Cache-Control" = "no-cache";n    "Content-Length" = 34;n    "Content-Type" = "application/json;charset=UTF-8";n    Date = "Fri, 30 Sep 2016 10:30:31 GMT";n    Expires = "-1";n    Pragma = "no-cache";n    Server = "Microsoft-IIS/8.5";n    "X-Powered-By" = "ASP.NET";n} }")
SUCCESS
Success with JSON: {
    error = "unsupported_grant_type";
}
其中error = "unsupported_grant_type";意味着body中的grant_type没有被服务器接收到

目前仍没有找到问题的原因和解决方法,在此向有经验的人求教,先行谢过!

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表