首页 > 解决方案 > 对令牌的快速 POST 请求有问题

问题描述

所以我试图做一个快速而肮脏的发布请求来获取一个令牌,但我一直收到这个错误。我现在要做的就是打印 JSON,所以我知道我至少可以测试应用程序。

    <NSHTTPURLResponse: 0x600002990600> { URL: https://development-290808.ew.r.appspot.com/token } { Status Code: 422, Headers {
    "Alt-Svc" =     (
        "h3-29=\":443\"; ma=2592000,h3-T051=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\""
    );
    "Content-Length" =     (
        172
    );
    "Content-Type" =     (
        "application/json"
    );
    Date =     (
        "Wed, 16 Dec 2020 00:10:14 GMT"
    );
    Server =     (
        "Google Frontend"
    );
    "x-cloud-trace-context" =     (
        "a71f62144e6ce9a6c7046d700a6bad7a;o=1"
    );
} }
{
    detail =     (
                {
            loc =             (
                body,
                username
            );
            msg = "field required";
            type = "value_error.missing";
        },
                {
            loc =             (
                body,
                password
            );
            msg = "field required";
            type = "value_error.missing";
        }
    );
}

使用此代码

func getToken() {
    
    let parameters = ["username" : "Zach", "password" : "Password"]
    guard let url = URL(string: "https://development-290808.ew.r.appspot.com/token") else { return }
    
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
        return }
    request.httpBody = httpBody
    
    let session = URLSession.shared
    session.dataTask(with: request) { (data, response, error) in
        if let response = response {
            print(response)
        }
        
        if let data = data {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                print(json)
            } catch {
                print(error)
                
            }
            
        }
        
    }.resume()
    
}

}

而且由于堆栈溢出不喜欢在您发布主要代码和小 txt 时出现,所以我在这里添加更多文本,以便发布这个问题。

标签: jsonswiftapipostnetworking

解决方案


看起来这可能是请求正文的问题..您的服务器看起来期待不同的东西。检查后端的拼写和字段。


推荐阅读