错误405:无法上载自定义播放列表封面图像 [英] Error 405: Unable to Upload a Custom Playlist Cover Image

查看:13
本文介绍了错误405:无法上载自定义播放列表封面图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要将播放列表图像从我的iOS应用程序上载到Spotify Web API。

我遵循了docs page上的说明:我请求了ugc-image-uploadplaylist-modify-publicplaylist-modify-private作用域,添加了内容类型标头并生成了jpeg Base64字符串。但我一直收到405 Method Not Allowed错误。我能够在Android上创建具有相同URL和授权令牌的图像。我已经尝试将Android生成的Base64字符串添加到我的快速请求中,但同样不起作用。

这是由Postman生成的快速代码示例,我试图在其中调试该请求。Base64字符串是一个100x100橙色的jpeg图像,它是在我的Android应用程序中生成的,并在那里工作。解码过程在这个站点上确实起作用了,结果是预期的图像:https://www.base64decode.org在邮递员中,我也不能让它起作用。

let headers = [
    "Authorization": "Bearer […]",
    "Content-Type": "image/jpeg",
    "Cache-Control": "no-cache"
]

let postData = NSData(data: "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCABkAGQDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAkK/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AvABJ9oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/9k=".data(using: String.Encoding.utf8)!)

let request = NSMutableURLRequest(url: NSURL(string: "https://api.spotify.com/v1/users/[…]/playlists/[…]/images")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
    if (error != nil) {
        print(error)
    } else {
        let httpResponse = response as? HTTPURLResponse
        print(httpResponse)
    }
})

dataTask.resume()

这里是httpResponse

Optional(<NSHTTPURLResponse: 0x282fdf300> { URL: https://api.spotify.com/v1/users/[…]/playlists/[…]/images } { Status Code: 405, Headers {
    "Access-Control-Allow-Origin" =     (
        "*"
    );
    "Cache-Control" =     (
        "private, max-age=0"
    );
    "Content-Length" =     (
        0
    );
    Date =     (
        "Fri, 20 Jul 2018 14:12:01 GMT"
    );
    Via =     (
        "1.1 google"
    );
    "access-control-allow-credentials" =     (
        true
    );
    "access-control-allow-headers" =     (
        "Accept, Authorization, Origin, Content-Type, Retry-After"
    );
    "access-control-allow-methods" =     (
        "GET, POST, OPTIONS, PUT, DELETE, PATCH"
    );
    "access-control-max-age" =     (
        604800
    );
    allow =     (
        "GET, HEAD, OPTIONS, PUT"
    );
    "alt-svc" =     (
        clear
    );
} })

由于Base64字符串、授权令牌和URL相同,我假设我的请求正文或标头字段有问题。

提前谢谢!

推荐答案

发现了问题:它应该执行PUT请求,而不是POST请求。 更改这一行后,它确实起作用了。

request.httpMethod = "PUT"

这篇关于错误405:无法上载自定义播放列表封面图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆