MagicMirror² v2.12.0 is available! For more information about this release, check out this topic.

axios request returns no data, while http request does


  • Module Developer

    I have set up an axios request for a module I’M trying to fix (MMM-Fantasy-Premier league)

                                axios.get(url)
                                    .then(function(response){
                                            console.log(response);
                                    }).catch(function(err){
                                            console.log(self.name + " : getleagueData : " + err);
                                    });
    

    The axios request gives me a this:

    {
      status: 200,
      statusText: 'OK',
      headers: {
        connection: 'close',
        'content-length': '0',
        server: 'Varnish',
        'retry-after': '0',
        'content-type': 'application/json',
        'accept-ranges': 'bytes',
        date: 'Fri, 11 Sep 2020 07:17:50 GMT',
        via: '1.1 varnish',
        'x-served-by': 'cache-hhn4058-HHN',
        'x-cache': 'MISS',
        'x-cache-hits': '0',
        'x-timer': 'S1599808670.050178,VS0,VE0'
      },
      config: {
        url: 'https://fantasy.premierleague.com/api/leagues-classic/63436/standings',
        method: 'get',
        headers: {
          Accept: 'application/json, text/plain, */*',
          'User-Agent': 'axios/0.20.0'
        },
        transformRequest: [ [Function: transformRequest] ],
        transformResponse: [ [Function: transformResponse] ],
        timeout: 0,
        adapter: [Function: httpAdapter],
        xsrfCookieName: 'XSRF-TOKEN',
        xsrfHeaderName: 'X-XSRF-TOKEN',
        maxContentLength: -1,
        maxBodyLength: -1,
        validateStatus: [Function: validateStatus],
        data: undefined
      },
      request: ClientRequest {
        _events: [Object: null prototype] {
          socket: [Function],
          abort: [Function],
          aborted: [Function],
          connect: [Function],
          error: [Function],
          timeout: [Function],
          prefinish: [Function: requestOnPrefinish]
        },
        _eventsCount: 7,
        _maxListeners: undefined,
        outputData: [],
        outputSize: 0,
        writable: true,
        _last: true,
        chunkedEncoding: false,
        shouldKeepAlive: false,
        useChunkedEncodingByDefault: false,
        sendDate: false,
        _removedConnection: false,
        _removedContLen: false,
        _removedTE: false,
        _contentLength: 0,
        _hasBody: true,
        _trailer: '',
        finished: true,
        _headerSent: true,
        socket: TLSSocket {
          _tlsOptions: [Object],
          _secureEstablished: true,
          _securePending: false,
          _newSessionPending: false,
          _controlReleased: true,
          _SNICallback: null,
          servername: 'fantasy.premierleague.com',
          alpnProtocol: false,
          authorized: true,
          authorizationError: null,
          encrypted: true,
          _events: [Object: null prototype],
          _eventsCount: 10,
          connecting: false,
          _hadError: false,
          _parent: null,
          _host: 'fantasy.premierleague.com',
          _readableState: [ReadableState],
          readable: true,
          _maxListeners: undefined,
          _writableState: [WritableState],
          writable: false,
          allowHalfOpen: false,
          _sockname: null,
          _pendingData: null,
          _pendingEncoding: '',
          server: undefined,
          _server: null,
          ssl: [TLSWrap],
          _requestCert: true,
          _rejectUnauthorized: true,
          parser: null,
          _httpMessage: [Circular],
          [Symbol(res)]: [TLSWrap],
          [Symbol(asyncId)]: 5496,
          [Symbol(kHandle)]: [TLSWrap],
          [Symbol(lastWriteQueueSize)]: 0,
          [Symbol(timeout)]: null,
          [Symbol(kBytesRead)]: 0,
          [Symbol(kBytesWritten)]: 0,
          [Symbol(connect-options)]: [Object]
        },
        connection: TLSSocket {
          _tlsOptions: [Object],
          _secureEstablished: true,
          _securePending: false,
          _newSessionPending: false,
          _controlReleased: true,
          _SNICallback: null,
          servername: 'fantasy.premierleague.com',
          alpnProtocol: false,
          authorized: true,
          authorizationError: null,
          encrypted: true,
          _events: [Object: null prototype],
          _eventsCount: 10,
          connecting: false,
          _hadError: false,
          _parent: null,
          _host: 'fantasy.premierleague.com',
          _readableState: [ReadableState],
          readable: true,
          _maxListeners: undefined,
          _writableState: [WritableState],
          writable: false,
          allowHalfOpen: false,
          _sockname: null,
          _pendingData: null,
          _pendingEncoding: '',
          server: undefined,
          _server: null,
          ssl: [TLSWrap],
          _requestCert: true,
          _rejectUnauthorized: true,
          parser: null,
          _httpMessage: [Circular],
          [Symbol(res)]: [TLSWrap],
          [Symbol(asyncId)]: 5496,
          [Symbol(kHandle)]: [TLSWrap],
          [Symbol(lastWriteQueueSize)]: 0,
          [Symbol(timeout)]: null,
          [Symbol(kBytesRead)]: 0,
          [Symbol(kBytesWritten)]: 0,
          [Symbol(connect-options)]: [Object]
        },
        _header: 'GET /api/leagues-classic/63436/standings HTTP/1.1\r' +
          '\nAccept: application/json, text/plain, */*\r' +
          '\nUser-Agent: axios/0.20.0\r' +
          '\nHost: fantasy.premierleague.com\r' +
          '\nConnection: close\r' +
          '\n\r' +
          '\n',
        _onPendingData: [Function: noopPendingOutput],
        agent: Agent {
          _events: [Object: null prototype],
          _eventsCount: 1,
          _maxListeners: undefined,
          defaultPort: 443,
          protocol: 'https:',
          options: [Object],
          requests: {},
          sockets: [Object],
          freeSockets: {},
          keepAliveMsecs: 1000,
          keepAlive: false,
          maxSockets: Infinity,
          maxFreeSockets: 256,
          maxCachedSessions: 100,
          _sessionCache: [Object]
        },
        socketPath: undefined,
        method: 'GET',
        path: '/api/leagues-classic/63436/standings',
        _ended: true,
        res: IncomingMessage {
          _readableState: [ReadableState],
          readable: false,
          _events: [Object: null prototype],
          _eventsCount: 3,
          _maxListeners: undefined,
          socket: [TLSSocket],
          connection: [TLSSocket],
          httpVersionMajor: 1,
          httpVersionMinor: 1,
          httpVersion: '1.1',
          complete: true,
          headers: [Object],
          rawHeaders: [Array],
          trailers: {},
          rawTrailers: [],
          aborted: false,
          upgrade: false,
          url: '',
          method: null,
          statusCode: 200,
          statusMessage: 'OK',
          client: [TLSSocket],
          _consuming: false,
          _dumped: false,
          req: [Circular],
          responseUrl: 'https://fantasy.premierleague.com/api/leagues-classic/63436/standings',
          redirects: []
        },
        aborted: false,
        timeoutCb: null,
        upgradeOrConnect: false,
        parser: null,
        maxHeadersCount: null,
        _redirectable: Writable {
          _writableState: [WritableState],
          writable: true,
          _events: [Object: null prototype],
          _eventsCount: 2,
          _maxListeners: undefined,
          _options: [Object],
          _ended: true,
          _ending: true,
          _redirectCount: 0,
          _redirects: [],
          _requestBodyLength: 0,
          _requestBodyBuffers: [],
          _onNativeResponse: [Function],
          _currentRequest: [Circular],
          _currentUrl: 'https://fantasy.premierleague.com/api/leagues-classic/63436/standings'
        },
        [Symbol(isCorked)]: false,
        [Symbol(outHeadersKey)]: [Object: null prototype] {
          accept: [Array],
          'user-agent': [Array],
          host: [Array]
        }
      },
      data: ''
    }
    

    So response.data is empty.
    When I call this exact site in my browser I get a valid json esponse.

    What am I doing wrong?
    Does anyone know?


  • Module Developer

    Hi,

    Sometime something like this with https can help:

    const httpsAgentConfig = { rejectUnauthorized: false }
    this.axiosInstance = axios.create({
      httpsAgent: new https.Agent(httpsAgentConfig),
    })
    

    after adapt it with your code
    try it, no guaranties… but maybe …


Log in to reply