• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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.5k 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.
  • L Offline
    lavolp3 Module Developer
    last edited by lavolp3 Sep 11, 2020, 7:39 AM Sep 11, 2020, 7:37 AM

    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 Sep 12, 2020, 4:36 AM

      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 Oct 5, 2020, 6:01 AM

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

        1 Reply Last reply Reply Quote 0
        • L Offline
          lavolp3 Module Developer
          last edited by Oct 5, 2020, 9:23 AM

          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 Dec 31, 2020, 12:43 PM

            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 L 2 Replies Last reply Dec 31, 2020, 1:18 PM Reply Quote 1
            • S Away
              sdetweil @sharklaser
              last edited by Dec 31, 2020, 1:18 PM

              @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
              • L Offline
                lavolp3 Module Developer @sharklaser
                last edited by Jan 6, 2021, 10:35 PM

                @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