无法在ReactNative App中执行API调用

时间:2017-10-13 19:13:48

标签: reactjs react-native fetch-api

我正在通过互联网学习构建基于ReactNative的应用程序。

我现在只是想在应用程序内部进行简单的API调用。

同样的API在其他项目中工作,但对我来说不是。

我无法弄清楚它的ReactNative问题还是API问题。据我所知,它不能是API问题。

我的应用程序 -

"react": "16.0.0-alpha.6",
"react-native": "0.44.0",

我正在通过react-native run-ios命令运行应用程序。

根据我对这个问题的搜索,我已经尝试过这些 - 但仍然没有成功。

  1. AppTransportSecurity内添加所有info.plist项内容。
  2. 再次删除并安装所有节点模块。
  3. 尝试在Android上运行相同的操作,但仍然相同。
  4. 我的API调用代码 -

    fetch(api.login(this.state.email,this.state.password), {
                    method: "POST",
                        headers: {
                            'Accept': 'application/json',
                            'Content-Type': 'application/json',
                            //'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                        },
                        body: JSON.stringify({
                            'email': this.state.email,
                            'password': this.state.password
                        })
                    })
                    .then((response) => response.json())
                    .then((responseData) => {
    
                        if(responseData.status===200){
    
                            if(Platform.OS==="ios"){
                                Alert.alert( 'Success',"", { cancelable: false });
                            }else{
                                ToastAndroid.show('Success', ToastAndroid.SHORT);
                            }
    
                            //storageHelper.saveUser(responseData.data.user_id.toString());
                            //this.fetchUserProfile();
                        }else{
                            if(Platform.OS==="ios"){
                                Alert.alert( 'Please try again',"", { cancelable: false });
                            }else{
                                ToastAndroid.show('Please try again', ToastAndroid.SHORT);
                            }
                        }
                    })
                    .catch(e => {
    
                        if(Platform.OS==="ios"){
                            Alert.alert('error','Login fail'+JSON.stringify(e), { cancelable: false });
                        }else{
                            ToastAndroid.show('Error : Login fail'+JSON.stringify(e), ToastAndroid.SHORT);
                        }
                    })
                    .done();
    

    我从catch条件 -

    收到此错误
    Login fail{"line":15259, "column":29,"sourceURL":"http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false"}
    

    我坚持这个问题,需要一个解决方案。

    谢谢,

0 个答案:

没有答案