我正在尝试使用 Spotify API 添加Track到用户的库,但收到 400 响应状态。我已经尝试过这个请求,并且由于标头令牌而Alamofire开始出现错误。postCountSpotify
这是代码的一部分:
func spotify_addToLibrary()
{
self.spotify_verifySession(completion:{ success , auth in
if !success
{
return
}
let postString = "ids=[\"\(self.trackid)\"]"
let url: NSURL = NSURL(string: "https://api.spotify.com/v1/me/tracks")!
var request = URLRequest(url: url as URL)
request.cachePolicy = .useProtocolCachePolicy
request.timeoutInterval = 8000
request.addValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("Bearer \(auth.session.accessToken!)", forHTTPHeaderField: "Authorization")
request.httpMethod = "post"
request.httpBody = postString.data(using: .utf8)
URLSession.shared.dataTask(with: request) {data, response, err in
if err == nil
{
print("Add to Library success \(String(describing: response))")
}else
{
print("Add to Library Error \(String(describing: err))")
}
}.resume()
})
}
Run Code Online (Sandbox Code Playgroud)
这是日志:
Add to Library success Optional(<NSHTTPURLResponse: 0x174c25d80> { URL: https://api.spotify.com/v1/me/tracks } { status code: 405, headers {
"Access-Control-Allow-Origin" = "*";
"Cache-Control" = "private, max-age=0";
"Content-Length" = 0;
Date = "Fri, 08 Sep 2017 14:29:24 GMT";
Server = nginx;
"access-control-allow-credentials" = true;
"access-control-allow-headers" = "Accept, Authorization, Origin, Content-Type";
"access-control-allow-methods" = "GET, POST, OPTIONS, PUT, DELETE";
"access-control-max-age" = 604800;
allow = "DELETE, GET, HEAD, OPTIONS, PUT";
} })
Run Code Online (Sandbox Code Playgroud)
我在那里错过了什么?
HTTP 错误 405 表示您尝试在 REST 请求中使用在特定端点上无效的方法。
如果您检查Spotify Web API 的文档,它会明确指出用于端点的有效 HTTP 动词/me/tracks是:DELETE、GET和PUT。POST是不允许的,因此会出现错误。
只需更改request.httpMethod = "post"为request.httpMethod = "put",错误就应该解决。
Foundation一些通用建议:当存在本机 Swift 等效项(NSURL而不是)并符合 Swift 命名约定时,不要使用类型URL,即变量和函数名称采用小驼峰命名法(spotify_addToLibrary应该是spotifyAddToLibrary)。8000秒的超时间隔似乎也相当不现实。
| 归档时间: |
|
| 查看次数: |
3477 次 |
| 最近记录: |