javascript - 如何在本机反应中在获取 POST 请求中抛出 Catch
问题描述
当我在 React Native 中调用 POST 请求时,我遇到了调用错误的问题,我知道有一个问题,但它只会抛出网络连接,当我有一个从响应中得到的错误时,我该怎么做错误的密码或错误的用户名,例如从响应中调用此错误时:
Object {
"error": "invalid_request",
"error_description": "Missing form parameter: grant_type",
}
fetch("https://websiteo.com/auth/realms/realmsid/protocol/openid-connect/token", {
method: 'POST',
headers: myHeaders,
body: urlencoded.toString(),
})
.then(response => response.json())
.then(result => {
//console.log(result)
console.log(result)
saveToken('secure_access_token', `${result.access_token}`)
props.navigation.navigate('HomeApp') //i need to throw catch also when username or password wrong
})
.catch(error => alert(error.response.data)) //This is only thrown when network problems
解决方案
您可以在响应中验证 json 是否为 200 或失败,如下所示:
fetch("https://websiteo.com/auth/realms/realmsid/protocol/openid-connect/token", {
method: 'POST',
headers: myHeaders,
body: urlencoded.toString(),
})
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Something went wrong');
}
})
.then(result => {
//console.log(result)
console.log(result)
saveToken('secure_access_token', `${result.access_token}`)
props.navigation.navigate('HomeApp')
})
.catch(error => alert(error.response.data)) //This is only thrown when network problems
推荐阅读
- python - 'style.theme_create' python 的问题
- applescript - 在AppleScript中从列表中选择的枚举关联数组
- python - Cloud Scheduler 调用的 GCP Cloud Run 应用的当前最大超时是多少
- python - 使用 namedtuple 使用 Python 将 txt 转换为 JSON
- regex - Azure 数据资源管理器,Kusto:替换正则表达式问题
- vue.js - vue-recaptcha 增加过期时间
- android - 通过 termux 命令行启动任何应用程序,例如 chrome、youtube 和其他一些应用程序,如 cryptotabbrowser
- mysql - mysql在午夜不工作之间
- influxdb - 查询 InfluxDB 最后一点
- java - 在 Wildfly 中部署 Spring 应用程序时出现 Weld 错误