Получите ошибку 500 или 403 Node JS, но не почтальон - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь сделать некоторый запрос к API-интерфейсу вещей, используя axios на Node JS, но я получил много ошибок 403 или 500, в то время как с Postman запрос в порядке и возвращает результаты.

Вот ссылки на запрос:

http://api.thingspeak.com/channels/427119/feeds.json?api_key=E2LYNJW88VS4RAWD http://api.thingspeak.com/channels/427080/feeds.json?api_key=GCRAL5SKAPGVYMGR http://api.thingspeak.com/channels/427081/feeds.json?api_key=BNIF0PM91878SFOY http://api.thingspeak.com/channels/427082/feeds.json?api_key=S3F841BJTUCG425N http://api.thingspeak.com/channels/427083/feeds.json?api_key=JTLVAPSNKKJ6CSFN http://api.thingspeak.com/channels/427088/feeds.json?api_key=E5ES85KE9EU4PHRB http://api.thingspeak.com/channels/427089/feeds.json?api_key=3CMI4I2NCAYN1OKH http://api.thingspeak.com/channels/427090/feeds.json?api_key=B2XVSAUZSFAHKYO8

Ниже приведена моя функция loadManyAssets, которую я использую для выполнения всех вызовов перед вызовом функции обратного вызова. Я пытался установить другое время ожидания и ограничение maxsockets, но результаты не изменились.

    async function loadManyAssets(assets, callback, timeout) {
  const res = []
  const config = {
    headers: {
      'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0',
    },
  }

  await Promise.map(assets, async asset => {
    let error
    let content
    let ctx
    let url

    if (_.isObject(asset)) {
      ctx = asset.ctx
      url = asset.url
    } else {
      url = asset
    }

    try {
      await axios({
        method: 'GET',
        httpAgent: new http.Agent({ keepAlive: true, maxSockets: 100 }),
        httpsAgent: new https.Agent({ keepAlive: true, maxSockets: 100 }),
        url: url,
        headers: config,
        timeout: timeout,
      })
        .then(res => {
          content = res.data
        })
        .then(delay.bind(null,1000)) // I tried to put some delay between each request
    } catch (e) {
      if (!isTesting) console.error(error.message)
      error = e
    }

    res.push({ error, content, ctx })
  })

  callback(res)
} 

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...