我正在尝试在对特定api的发布请求中放入三个参数,但未得到预期的响应。 API在我的邮递员中工作正常,但我不确定我在React Native应用程序中的获取方法,对此我是陌生的,所以我不知道如何在我的api请求中放置标头,但我关注了一些文档,但请不要多看看并回答我的问题。
constructor (props) {
super (props)
this.state = {
detail: ''
}
}
ComponentDidMount(){
var data = new FormData();
data.append('mobile_number','8615351655')
data.append('mobile_country_code','+21')
data.append('rec_name','Shantanu Talwaar')
}
fetchData = async() => {
fetch('http://link.com/link/',
{
method: 'POST',
headers:{
//this what's exactly look in my postman
'Authorization': 'Token 97a74c03004e7d6b0658dfdfde34fd6aa4b14ddb;
},
body: this.data
})
.then((response) => response.json())
.then((responseJson) => {
alert(responseJson.detail)
}).catch((error) => {
alert('error')})}
render() {
return (
<View style = {styles.container}>
<Button onPress = {this.fetchData} title = "fetch"/>
<Text style={styles.text}>Fetched data displays below</Text>
<Text style={styles.text}>{this.state.detail}</Text>
</View>
)
}
}
这是我现在在警报框中得到的结果:“未提供身份验证凭据。”
答案 0 :(得分:2)
您的令牌后没有'。
'Authorization': 'Token 97a74c03004e7d6b0658dfdfde34fd6aa4b14ddb;
由于它是JSON对象,因此应删除分号
因此,最终的代码将是
'Authorization': 'Token 97a74c03004e7d6b0658dfdfde34fd6aa4b14ddb'
还有另一个问题。数据声明无法通过访存功能访问。所以你应该做这样的事情。
fetchData = async() => {
var data = new FormData();
data.append('mobile_number','8615351655')
data.append('mobile_country_code','+21')
data.append('rec_name','Shantanu Talwaar')
fetch('http://link.com/link/',
{
method: 'POST',
headers:{
//this what's exactly look in my postman
'Authorization': 'Token 97a74c03004e7d6b0658dfdfde34fd6aa4b14ddb'
},
body: data
})
.then((response) => response.json())
.then((responseJson) => {
alert(responseJson.detail)
}).catch((error) => {
alert('error')
})
}
答案 1 :(得分:2)
我认为您可以将“ x-access-token”用作身份验证令牌的标头名称,并放置Content-Type
。
fetchData = () => {
fetch('http://link.com/link/',
{
method: 'POST',
headers:{
'Content-Type': "application/json",
'x-access-token': 'Token 97a74c03004e7d6b0658dfdfde34fd6aa4b14ddb'
},
body: this.data
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson.detail)
}).catch((error) => {
alert('error')})
}