我在使用react native fetch api时遇到了一个问题。多次请求失败。我有一个高速连接。但很多次都失败了。这个问题发生在android和ios上。
const shoppingApi = 'myserverlink';
async function Sendshoppinapi(data) {
try {
let response = await fetch(shoppingApi, {
method: 'POST',
headers: {
'Accept': 'application/json',
'content-type':'multipart/form-data'
},
body: data
});
let responseJson = await response.json();
return responseJson;
}
catch (error) {
Alert.alert(error.toString())
}
}
export {Sendshoppinapi};
作为post请求发送给服务器的数据
add_to_wishlist = (item,index) => {
{
let data = new FormData();
data.append('methodName', 'add_to_wishlist');
data.append('user_id', global.userid)
data.append('item_id', this.props.navigation.state.params.itemid.toString())
Sendshoppinapi(data).then((responseJson)=>{
console.warn(responseJson);
if(responseJson.responseCode == '200'){
this.setState({fav:false})
Alert.alert('SHOPPING','Item added to wishlist successfully.',[{text: 'OK',},],{ cancelable: false })
}
else{
this.setState({fav:false})
Alert.alert('SHOPPING','Item already .',[{text: 'OK',},],{ cancelable: false })
}
})}
}
当你在Android设备上运行应用程序时,API在一台计算机上,两者都在同一个网络上,我添加了一些可能的东西来检查。我没有详细的具体解决方案,因为每个主题都有很多答案。
使用带有promise的then()函数。(请求的代码段)
fetch(shoppingApi, {
method: 'POST',
headers: {
'Accept': 'application/json',
'content-type':'multipart/form-data'
},
body: data
})
.then((resp) => {
return resp.json()
})
.then((resp) => {
//resp contains your json data
});
我引用了我在另一个帖子中使用的答案——不过我添加了wait。
您可以检查呼叫的状态,以确定网络呼叫失败的原因。尝试使用fetch的ok来检查响应是否有效,例如:
.then(function(response) {
if (!response.ok) {
//throw error
} else {
//valid response
}
})
使用等待:
let response = await fetch(url)
if (response.ok) return await response.json()
您还可以访问响应的状态,如:
response.status;
或者,statusText,例如:
response.statusText;
查看以下内容:
https://developer.mozilla.org/en-US/docs/Web/API/Response/statusText
https://developer.mozilla.org/en-US/docs/Web/API/Response/status
https://www.tjvantoll.com/2015/09/13/fetch-and-errors/
类项目: hbm文件: 方法如下:
这段代码在几个月内运行良好: 但上周,react native抛出了一个错误“网络请求失败”。我确信我们的API正在工作,因为我已经在一些在线API测试仪上测试过了。 当我没有强制使用HTTPS,只有HTTP时,它就工作了。 我们当前的反应版本是:0.41 以下是错误:
问题内容: 当我使用(RN版本0.29.1)创建一个全新的项目并将提取内容放入公共Facebook演示电影API的render方法中时,它将引发。堆栈跟踪非常无用,我无法在chrome控制台中调试网络请求。这是我要发送的内容: 问题答案: 这里的问题是,iOS默认情况下不允许HTTP请求,仅允许HTTPS。如果要启用HTTP请求,请将其添加到您的:
当我使用(RN版本0.29.1)创建一个全新的项目,并将render方法中的一个fetch放到公共facebook演示电影API中时,它会抛出一个。有一个非常无用的堆栈跟踪和我不能调试网络请求在chrome控制台。以下是我正在发送的fetch:
我正在尝试从mocky接收一些简单的json。 反应本机提取函数: 远程调试器出错
Mpx提供了网络请求库fetch,抹平了微信,阿里等平台请求参数及响应数据的差异;同时支持请求拦截器,请求取消等 使用说明 import mpx from '@mpxjs/core' import mpxFetch from '@mpxjs/fetch' mpx.use(mpxFetch) // 第一种访问形式 mpx.xfetch.fetch({ url: 'http://xxx.com' }