Не могу получить ответ GET-запроса Axios - PullRequest
0 голосов
/ 19 марта 2019

Я вызываю GET-запрос от API-интерфейсов OpenWeather, как показано ниже:

const config = {
            headers: {
              accept: 'application/json',
            },
            data: {},
          };
        const url = 'http://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b6907d289e10d714a6e88b30761fae22';
        Axios.get(url, config).then((response) => {
            console.log(response);
        }).catch((e) => {
            Alert.alert('error', `${e}`);
            });

, но .then() не вызывается, и примерно через 15 секунд выдается исключение, и отображается предупреждение catch (говоряNetwork Error в то время как другие вызовы API работают, поэтому проблема с сетевыми ошибками не является проблемой).

URL работает в браузерах, но Axios не может выполнить этот вызов.У кого-нибудь есть идеи, что происходит?

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Используйте async/await. Это делает ваш код более удобным для чтения и позволяет избежать обратного вызова в ад.

import axios from 'axios';
const fetchData = async () => {
  const config = {
    headers: {
      accept: 'application/json',
    },
   data: {},
  };

  const url = 'http://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=b6907d289e10d714a6e88b30761fae22';

  const response = await axios.get(url, config);
  console.log(response);
}
0 голосов
/ 19 марта 2019

Убедитесь, что вам требуется пакет NPM вверху:

Для узла / реагирования:

const axios = require('axios');

import axios from 'axios';

Код, который вы предоставили, работал для меня.Я просто установил axios, импортировал его и в нижнем регистре "axios" в вашем примере и получил ответ от службы погоды.

Я получил следующий ответ с данными JSON (с некоторыми другими вещами):

 data:
   { cod: '200',
     message: 0.0036,
     cnt: 40,
     list:
      [ [Object],
        ...
        [Object],
        [Object] ],
     city:
      { id: 524901, name: 'Moscow', coord: [Object], country: 'none' } } }
...