MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    axios request returns no data, while http request does

    Scheduled Pinned Locked Moved General Discussion
    7 Posts 5 Posters 2.6k Views 5 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • lavolp3L Offline
      lavolp3 Module Developer
      last edited by lavolp3

      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?

      How to troubleshoot modules
      MMM-soccer v2, MMM-AVStock

      1 Reply Last reply Reply Quote 0
      • ? Offline
        A Former User
        last edited by

        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 …

        1 Reply Last reply Reply Quote 0
        • A Offline
          ASh
          last edited by

          Did you ever find out the answer to this, i’m having the same issue.

          1 Reply Last reply Reply Quote 0
          • lavolp3L Offline
            lavolp3 Module Developer
            last edited by

            No unfortunately not.
            Above addition did not help.

            I’m getting the feeling that the axios requests somehow closes before the data field is being returned. Haven’t tried much since it is not highest priority for me. But would appreciate any idea/suggestion.

            How to troubleshoot modules
            MMM-soccer v2, MMM-AVStock

            1 Reply Last reply Reply Quote 0
            • S Offline
              sharklaser
              last edited by

              for some reason it doesn’t seem to like the axios user agent. Changing it to something else appears to work. Example:

              axios.defaults.headers.common['User-Agent'] = 'PostmanRuntime/7.26.2';
              
              S lavolp3L 2 Replies Last reply Reply Quote 1
              • S Offline
                sdetweil @sharklaser
                last edited by

                @sharklaser many servers use the user-agent string to generate different content , as the ‘browsers’ all support different things, so a random string as user-agent will fail

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                1 Reply Last reply Reply Quote 0
                • lavolp3L Offline
                  lavolp3 Module Developer @sharklaser
                  last edited by

                  @sharklaser said in axios request returns no data, while http request does:

                  :
                  axios.defaults.headers.common[‘User-Agent’] = ‘PostmanRuntime/7.26.2’;

                  That was the solution! Thanks!!

                  How to troubleshoot modules
                  MMM-soccer v2, MMM-AVStock

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Enjoying MagicMirror? Please consider a donation!
                  MagicMirror created by Michael Teeuw.
                  Forum managed by Sam, technical setup by Karsten.
                  This forum is using NodeBB as its core | Contributors
                  Contact | Privacy Policy