我有一个API,需要标题才能允许访问。
它需要3种类型的标题,如果没有它们,您需要在浏览器中看到
Code: 4101
Message: Header X-Candy-Platform is required
但是当你有标题时,你会得到一个json。我试图让Json使用这个
反应NativegetPostsFromApiAsync(number) {
return fetch('http://THEAPI?api_key=APIKEY', {method: 'GET', headers: {
'x-candy-platform': 'desktop',
'x-candy-audience': 'domestic',
accept: 'application/json'
}})
.then((response) => response.json())
.then((responseJson) => {
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 != r2})
this.setState({peopleDataSource: ds.cloneWithRows(responseJson)});
})
.catch((error) => {
console.error(error);
});
}
然而,这让我觉得网络请求失败了。
如果我在里面有一个文件' fetch'这是本地的,它工作正常。
所需的三个标题是
x-candy-platform - desktop
x-candy-audience - domestic
Accept - application/json
有什么想法吗?感谢
答案 0 :(得分:0)
通常您还需要一个Content-Type
标题。试试这个,看它是否有效:
getPostsFromApiAsync(number) {
return fetch('http://THEAPI?api_key=APIKEY', {method: 'GET',
headers: {
'Content-Type' : 'application/json',
'Accept' : 'application/json',
'x-candy-platform': 'desktop',
'x-candy-audience': 'domestic'
}})
.then((response) => response.json())
.then((responseJson) => {
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 != r2})
this.setState({peopleDataSource: ds.cloneWithRows(responseJson)});
})
.catch((error) => {
console.error(error);
});
}