我在React Native组件中使用了一些代码,这是一个简单的提取,将参数传递给OMDB API。这可能是一个CORS问题,因为如果我以下面的格式运行它直接到omdbapi.com它总是失败网络请求失败。但是,此请求适用于同一网络上的Android模拟器。
// The fetchData function makes an AJAX call to the OMDB API.
fetchData(movieinput) {
console.log("In fetch");
// We pass the movie the user entered in into the URL for the API call.
fetch('http://www.omdbapi.com/?t='+movieinput+'&y=&plot=short&r=json')
.then((response) => response.json())
.then((responseData) => {
// After the data is recieved, we set this.state.movie to the result of the API call.
this.setState({
movie: responseData,
});
})
.done();
}
但是,如果我将相同的代码运行到将远程请求包装到localhost请求中的本地URL,则它可以正常工作。
fetchData(movieinput) {
console.log("In fetch");
// We pass the movie the user entered in into the URL for the API call.
fetch('http://localhost:3000/movie/'+movieinput)
.then((response) => response.json())
.then((responseData) => {
// After the data is recieved, we set this.state.movie to the result of the API call.
this.setState({
movie: JSON.parse(responseData),
});
})
.done();
}
有什么想法吗?
答案 0 :(得分:0)
问题可能是App Transport Security,这是一项iOS特定限制(默认情况下)强制应用程序使用https进行所有网络通信。这是一个视频教程,解释如何调整ATS,以便您的反应原生应用程序可以工作:http://codecookbook.co/post/how-to-make-network-requests-in-react-native/