使用React Native

时间:2016-11-01 19:11:48

标签: javascript react-native fetch

我有一个API,需要标题才能允许访问。

它需要3种类型的标题,如果没有它们,您需要在浏览器中看到

Code: 4101
Message: Header X-Candy-Platform is required

但是当你有标题时,你会得到一个json。我试图让Json使用这个

反应Native
getPostsFromApiAsync(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

有什么想法吗?感谢

1 个答案:

答案 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);
        });
}