我正在使用XMLHttpRequest api在react native android app中从服务器请求资源 这是我的应用代码(客户端)
import React,{Component} from 'react';
import {Text,View,StyleSheet,TouchableOpacity} from 'react-native';
class Home extends Component
{
state={con:''}
show=()=>
{
alert("show function called");
var req=new XMLHttpRequest();
req.onreadystatechange=(e)=>
{
if(req.status==200 && req.readyState==4)
{
alert(req.responseText);
}
}
req.open("GET","http://localhost:3000/show_react");
req.send();
}
render()
{
return(
<View style={styles.container}>
<TouchableOpacity onPress={()=>this.show()} style={styles.box}><Text>Click</Text></TouchableOpacity>
<Text>{this.state.con}</Text>
</View>
);
}
}
export default Home;
const styles=StyleSheet.create({
box:
{
padding:10,
width:200,
marginTop:10,
backgroundColor:'rgba(215, 44, 149, 0.7)',
alignItems:'center'
},
container:
{
flexDirection:'row',
justifyContent:'center'
}
});
以下是我的简单node.js代码(服务器端),用于接受来自客户端的请求
app.get("/show_react",function(req,res){
console.log("show_react called");
res.send("hii react");
});
上述服务器端代码在浏览器请求时成功运行,但在客户端请求时无效(本机应用程序反应)。 任何答案都表示赞赏。
答案 0 :(得分:1)
好吧...在客户端,我刚刚创建了一个按钮。当触摸按钮时,显示功能被调用。这个show函数将为运行在端口3000的localhost服务器创建一个新的XMLHttpRequest(localhost:3000 / show_react)。
如果您在react native应用程序中的请求URL确实为localhost:3000/show_react
,那么您的问题是localhost
指向您的本地设备(即智能手机)。需要从运行React Native应用程序的设备访问该URL。尝试在设备(即智能手机)的Safari浏览器中浏览到URL