网络请求失败反应本机,在邮递员中工作

Network request failed react native, works in postman

您好,我正在创建一个 React 本机移动应用程序,我正在使用一个 java 后端,它将与 IBM watson 开发人员云进行通信。

无论出于何种原因,当我调用托管在 127.0.0.1:8080 上的其余 API 时,我得到的 network request failed 没有有用的调试信息。我环顾四周,似乎其他人也遇到了同样的问题,但 none 他们的修复对我有用。我的后端目前正在工作,我已经使用 POST 方法在 127.0.0.1:8080/test/chat.

与邮递员一起测试了它
{
    "id":"1",
    "name":"John",
    "message":"hello"
}

我的代码如下。非常感谢任何提示。

Backend.js

import React, { Component } from 'react';
import { TouchableOpacity, View, ActivityIndicator, Text, Alert } from 'react-native';

let myApiUrl = "http://127.0.0.1:8080";
let path = "test/chat";


export const sendMessage = async () => fetch(`${myApiUrl}/${path}`, {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        id: '1',
        name: 'john',
        message: 'hi',
        //context: 'null'
    })
}).then((response) => response.json())
    .then((responseJson) => {
        alert(response.Json.output.text);
    })
    .catch((error) => {
        console.error(error);
    });

Chatbot.js

import React, { Component } from 'react';
import {
    StyleSheet,
    Text,
    View,
    TouchableOpacity,
    KeyboardAvoidingView,
    AsyncStorage
} from 'react-native';
import { GiftedChat } from 'react-native-gifted-chat';
import { sendMessage } from '../components/Backend';


export default class Chatbot extends Component {


    state = {
        messages: [],
        text: '',
        context: '',
        output: '',
        message: 'book'
    };

    //onSend(messages = []) {
    //    this.setState(previousState => ({
    //        messages: GiftedChat.append(previousState.messages, messages),
    //    }))
    //}

    testSend() {

        sendMessage().then((data) => {
            console.log(data);
        }).catch((error) => {
            console.log("Api call error");
            alert(error.message);
        });
    }

    componentWillMount() {

    }

    render() {
        return (

            <TouchableOpacity onPress={() => { this.testSend() }} style={styles.container}>
                <Text style={styles.title}>
                    Send
                </Text>
                </TouchableOpacity>           
        );
    }
}

如果您在 Android 上 运行,则需要使用计算机的 IP 地址而不是 127.0.0.1

使用您计算机的 IP 地址或将 "myApiUrl" 更改为“10.0.2.2” 有关详细信息,请访问 android 开发人员文档 emulator networking