Как проверить, было ли тело в fetch POST отправлено в API в реакции native? - PullRequest
0 голосов
/ 22 октября 2018

Я создаю собственное приложение и получаю следующую ошибку.Я хочу отправить введенное сообщение, электронное письмо и имя в API, но он не показывает никакого результата в API.

Вот код:

fetch('localserverusingIPaddress', {
                method: 'POST',
                  headers: {
                    "Content-Type": "application/json",
                    'Accept': 'application/json',
                  },
                body: JSON.stringify({
                    name: this.state.name,
                    email: this.state.email,
                    message: this.state.message,
                }),
            })
            .then((response)=> {console.warn(response.json())})
            //{
            //  if (response.status){
            //      return response.json();
            //  }
                // console.warn(response.json())
                // return response.json();
            //})
                //console.warn(response);
                //response.json()
                //console.warn(JSON.parse(response))})
             .then((responseData)=>{
                this.showAlert();
                console.warn(responseData);
                return responseData;
             })
            .catch((error) => {
                console.warn(error);
            });

Однако, когда я пытаюсь проверитьвведенные тексты в симуляторе iOS, он показывает значение.Это также показывает значения, когда я публикую данные в API напрямую с почтальоном.Поэтому я начинаю думать, что тело не было передано API.

Может кто-нибудь сказать, почему это происходит и как это исправить?Большое вам спасибо, я сталкиваюсь с этой проблемой в течение нескольких недель ...

1 Ответ

0 голосов
/ 22 октября 2018

Первый шаг - убедиться, что ваш симулятор iOS действительно может отправлять запросы вашему локальному хосту или нет.Если он не может достичь вашей локальной сети, он должен выдать какую-то ошибку подключения.Однако, из вашего комментария выше, кажется, что это не проблема.

Попробуйте этот код:

let url = 'localserverusingIPaddress';
let requestObject = {
    name: this.state.name,
    email: this.state.email,
    message: this.state.message
};

try {
    let response = await fetch(url, {
      method: "POST",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json"
      },
      body: JSON.stringify(requestObject)
    });

    responseJson = await response.json();
    console.log(responseJson);

  } catch (error) {
    console.error(error);    
  }

Попробуйте это и посмотрите, что является зарегистрированным выходом.

Самый простой способ узнать, действительно ли запрос достиг вашего API, - с самого конца API.На вашем сервере должна быть реализована какая-то регистрация событий.Посмотрите, что происходит там, когда вы делаете запрос от Почтальона, и сравните его вывод с тем, что происходит, когда вы делаете запрос из приложения.

...