但是我试图从https链接中获取json文件,无论给定什么链接,结果都不会改变!?
我验证了所有json文件。万一他们有一个错误。 responseData保持不变,即使我通过改为返回responseData并返回手动编写的json来强制更改数据时也是如此;它会立即变回原来的json数据,当我将responseData返回时,它不会发生变化。 我请求发布到控制台的responseData提供了错误的信息 给出的网址正确。 但是当我填写Internet浏览器中的链接时,输出与数据不对应。
constructor(props){
super(props);
this.state = {
connected: false,
}
this.init = this.init.bind(this);
this.getJson = this.getJson.bind(this);
this.updateVisited = this.updateVisited.bind(this);
}
init = async ({json})=>{
if(json==null){
await AsyncStorage.setItem('database', "");
alert('error occured');
} else {
await AsyncStorage.setItem('database', JSON.stringify(json));
this.setState({
connected: true
});
}
}
getJson = async ()=>{
var url = await AsyncStorage.getItem("database_url");
console.log(url);
return fetch(url,
{
method: "GET",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
})
.then(response => response.json())
.then(responseData => {
this.updateVisited(url);
console.log(responseData);
return responseData;
})
.catch(error => {
alert('Could not connect!');
return null;
})
}
connect = async ({url})=>{
await AsyncStorage.setItem("database_url", url);
this.getJson().then(json => this.init({json}));
}
"a_json": [{"name": "greg"}]
"test": [{"name": "sheldon"}]
"temp": [{"name": "bob"}]
当url指向json测试时,它使bob期待sheldon 当网址指向json临时时,它会给bob期望bob 当网址指向json a_json时,它会给bob期望greg 当返回一个json而不试图从互联网上的responseData位置获取它时;它给出了期望值
如果您需要更多信息,请随时提问。 谢谢您抽出宝贵时间阅读我的问题。
答案 0 :(得分:0)
问题是Cache-Control
。
我在提取的标题中添加了'Cache-Control': 'no-cache'
,从而解决了该问题!
@Pritish Vaidya在评论中指出了这一点