React native 使用react native时返回并不连接
我已经在backand中创建了一个简单的对象,它有三个字段——准入号、用户名和密码。在backand中尝试RESTAPI的POST方法时,数据插入成功。但是,当我尝试使用模拟器时,它没有连接到此对象。我尝试了很多方法——检查对象的url,将对象的安全设置为public,检查匿名令牌,但这些都不能解决我的问题 我做错什么了吗?请检查代码并帮助我React native 使用react native时返回并不连接,react-native,backand,React Native,Backand,我已经在backand中创建了一个简单的对象,它有三个字段——准入号、用户名和密码。在backand中尝试RESTAPI的POST方法时,数据插入成功。但是,当我尝试使用模拟器时,它没有连接到此对象。我尝试了很多方法——检查对象的url,将对象的安全设置为public,检查匿名令牌,但这些都不能解决我的问题 我做错什么了吗?请检查代码并帮助我 import React, { Component } from 'react'; import { StyleSheet, Text, View
import React, { Component } from 'react';
import {
StyleSheet,
Text,
View,
Image,
TextInput,
ScrollView
} from 'react-native';
import Container from './Container';
import Button from './Button';
import Label from './Label';
import ImageContainer from './ImageContainer';
export default class RegisterView extends Component {
constructor(props) {
super(props)
this.state = {
email: '',
password: '',
admissionNo:'',
}
}
_handleAdd = () => {
try{
if((this.state.email)!=="" && (this.state.password)!=="" &&
(this.state.admissionNo)!=="" ){
const data = {
admission_no: this.state.admissionNo,
username: this.state.email,
password: this.state.password,
}
const json = JSON.stringify(data);
let response =
fetch('https://api.backand.com:443/1/objects/parents', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'AnonymousToken': 'abcdef', //actual token has been given
'Cache-Control': 'no-cache=\"set-cookie\"',
},
body: json
});
if (response.status === 200) {
alert('Success! You may now login');
this.props.navigator.pop();
}
else {
alert(this.state.admissionNo);
}
}
else
{
alert ("Cannot be empty!")
}
}
catch(err){
alert(err);
console.log(err);
}
}
render() {
return (
<ScrollView style={styles.scroll}>
<ImageContainer>
<Image
style={{width:110,height: 110, justifyContent: 'center',
alignItems: 'center'}}
source={require('./Logo.png')}>
</Image>
</ImageContainer>
<Container>
<TextInput
placeholder="Admission No."
style={styles.textInput}
onChangeText={(text) => this.setState({admissionNo:text})}
autoCapitalize="none"
autoCorrect={false}
onSubmitEditing={(event) => {
const{admissionNo}=this.state.admissionNo;
const{onSubmitEditing}=this.props;
if(!admissionNo) return
onSubmitEditing(admissionNo)
this.refs.SecondInput.focus();
}}
/>
<TextInput
placeholder="Username"
style={styles.textInputUsername}
onChangeText={(text) => this.setState({email:text})}
autoCapitalize="none"
autoCorrect={false}
onSubmitEditing={(event) => {
const{email}=this.state.email;
const{onSubmitEditing}=this.props;
if(!email) return
onSubmitEditing(email)
this.refs.SecondInput.focus();
}}
/>
<TextInput
placeholder="Password"
ref='SecondInput'
secureTextEntry={true}
onChangeText={(text) => this.setState({password:text})}
style={styles.textInputPass}
/>
</Container>
<Container>
<Button
label="Create Account"
styles={{button: styles.primaryButton, label:
styles.buttonWhiteText}}
onPress={this._handleAdd}
/>
</Container>
</ScrollView>
);
}
}
import React,{Component}来自'React';
进口{
样式表,
文本,
看法
形象,,
文本输入,
卷轴视图
}从“反应本机”;
从“./Container”导入容器;
从“./按钮”导入按钮;
从“./Label”导入标签;
从“./ImageContainer”导入ImageContainer;
导出默认类RegisterView扩展组件{
建造师(道具){
超级(道具)
此.state={
电子邮件:“”,
密码:“”,
许可证编号:'',
}
}
_handleAdd=()=>{
试一试{
如果((this.state.email)!=”&&(this.state.password)!=”&&
(this.state.admissionNo)!=“”){
常数数据={
录取编号:本州录取编号:,
用户名:this.state.email,
密码:this.state.password,
}
const json=json.stringify(数据);
让响应=
取('https://api.backand.com:443/1/objects/parents', {
方法:“POST”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”,
'AnonymousToken':'abcdef',//已给出实际的令牌
“缓存控制”:“无缓存=\“设置cookie\”,
},
正文:json
});
如果(response.status==200){
警报(“成功!您现在可以登录”);
this.props.navigator.pop();
}
否则{
警报(此.状态.许可号);
}
}
其他的
{
警报(“不能为空!”)
}
}
捕捉(错误){
警惕(err);
控制台日志(err);
}
}
render(){
返回(
this.setState({admissionNo:text})
autoCapitalize=“无”
自动更正={false}
onSubmitEditing={(事件)=>{
const{admissionNo}=this.state.admissionNo;
const{onSubmitEditing}=this.props;
如果(!接纳否)返回
未提交(批准号)
this.refs.SecondInput.focus();
}}
/>
this.setState({email:text})
autoCapitalize=“无”
自动更正={false}
onSubmitEditing={(事件)=>{
const{email}=this.state.email;
const{onSubmitEditing}=this.props;
如果(!电子邮件)返回
onSubmitEditing(电子邮件)
this.refs.SecondInput.focus();
}}
/>
this.setState({password:text})}
style={style.textInputPass}
/>
);
}
}
准确地说出这里可能出现的问题有点困难。您是否能够确认web请求是从您的模拟器发出的?例如,如果同一个调用通过cURL工作,但在模拟器中失败,则可能是网络桥接问题。从emulator发送请求时,您是否收到任何错误?相同的调用通过cURL工作,但在emulator中不工作。我甚至在手机上使用了产品构建和安装,但都不起作用。当从模拟器发送请求时,我没有收到任何错误。乍一看,您的回击和API代码看起来是正确的。但是,您似乎正在使用我们的旧SDK-我们启动了一个新的SDK,支持react,可在上获得。您是否有任何方法可以将失败的请求转储到模拟器中的临时文件中,然后提供该数据?如果它通过cURL工作,但在emulator中不工作,则表明emulator中存在网络配置问题,但没有更多信息,我无法确定到底发生了什么。此外,您提到,当从emulator发送请求时,您没有收到任何错误-这是否意味着调用完成时没有错误,它以错误完成,但错误被抑制,或者执行线程没有到达发送请求的部分?