json - 对令牌的快速 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 时出现,所以我在这里添加更多文本,以便发布这个问题。
解决方案
看起来这可能是请求正文的问题..您的服务器看起来期待不同的东西。检查后端的拼写和字段。
推荐阅读
- database - 事件多时如何设计事实表及其属性
- javascript - 如何使用 onclick 正确执行函数 JS?
- ubuntu - 百胜安装
不工作 - python - 加入 DataFrames 以更新原始值
- python - Pims“意外的关键字参数”和“无效的 ImageJ 元数据或损坏的文件”
- yii - Yii2 从 url 中删除站点/索引
- css - 网站部分的滚动动画。
- java - Selenium 项目将无法连接到 Firefox
- ios - Swift:单击推送通知操作按钮时在文本字段中写入并处理它
- angular - 将 takeUntil() 与 Observable 一起使用
?