Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Cómo accedo a servicios web JSON desde QML
Forum Updated to NodeBB v4.3 + New Features

Cómo accedo a servicios web JSON desde QML

Scheduled Pinned Locked Moved Unsolved Spanish
2 Posts 2 Posters 956 Views
  • 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.
  • Q Offline
    Q Offline
    qtuser01
    wrote on last edited by
    #1

    Quisiera saber que es necesario para acceder a datos web JSON, concretamente a la API de
    Community Radio Browser: http://www.radio-browser.info/webservice

    Por ejemplo, esta llamada:
    http://www.radio-browser.info/webservice/json/stations/bytag/soul

    Hasta ahora tenía el siguiente ejemplo de acceso a la API de Flickr del libro Qt 5 Cadaques (https://qmlbook.github.io/en/ch11/index.html#flickr-calls), pero no funciona para otros servicios:

    import QtQuick 2.5

    Rectangle {
    width: 320
    height: 480
    ListView {
    id: view
    anchors.fill: parent
    delegate: Thumbnail {
    width: view.width
    text: modelData.title
    iconSource: modelData.media.m
    }
    }

    function request() {
        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
            if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {
                print('HEADERS_RECEIVED')
            } else if(xhr.readyState === XMLHttpRequest.DONE) {
                print('DONE')
                var json = JSON.parse(xhr.responseText.toString())
                view.model = json.items
            }
        }
        xhr.open("GET", "http://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1&tags=munich");
        xhr.send();
    }
    
    Component.onCompleted: {
        request()
    }
    

    }

    ¿Depende de si la respuesta JSON retorna o no un callback?

    N 1 Reply Last reply
    0
    • Q qtuser01

      Quisiera saber que es necesario para acceder a datos web JSON, concretamente a la API de
      Community Radio Browser: http://www.radio-browser.info/webservice

      Por ejemplo, esta llamada:
      http://www.radio-browser.info/webservice/json/stations/bytag/soul

      Hasta ahora tenía el siguiente ejemplo de acceso a la API de Flickr del libro Qt 5 Cadaques (https://qmlbook.github.io/en/ch11/index.html#flickr-calls), pero no funciona para otros servicios:

      import QtQuick 2.5

      Rectangle {
      width: 320
      height: 480
      ListView {
      id: view
      anchors.fill: parent
      delegate: Thumbnail {
      width: view.width
      text: modelData.title
      iconSource: modelData.media.m
      }
      }

      function request() {
          var xhr = new XMLHttpRequest();
          xhr.onreadystatechange = function() {
              if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {
                  print('HEADERS_RECEIVED')
              } else if(xhr.readyState === XMLHttpRequest.DONE) {
                  print('DONE')
                  var json = JSON.parse(xhr.responseText.toString())
                  view.model = json.items
              }
          }
          xhr.open("GET", "http://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1&tags=munich");
          xhr.send();
      }
      
      Component.onCompleted: {
          request()
      }
      

      }

      ¿Depende de si la respuesta JSON retorna o no un callback?

      N Offline
      N Offline
      numaelisis
      wrote on last edited by
      #2

      @qtuser01 Hola,

      prueba este codigo:

      import QtQuick 2.5

      Rectangle {
      width: 320
      height: 480
      ListModel{
      id:mimodel
      }

      ListView {
          id: view
          anchors.fill: parent
          model: mimodel
          delegate: Text {
              width: view.width
              height: 25
              text: name
      
          }
      }
      function request() {
          var xhr = new XMLHttpRequest();
          xhr.onreadystatechange = function() {
              if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {
                  print('HEADERS_RECEIVED')
              } else if(xhr.readyState === XMLHttpRequest.DONE) {
                  print('DONE')
                  var json = JSON.parse(xhr.responseText.toString())
      
                  mimodel.clear();
                  for(var i = 0,len=json.length;i<len;i++){
                      mimodel.append(json[i]);
                  }
              }
          }
          xhr.open("GET", "http://www.radio-browser.info/webservice/json/stations/bytag/soul");
          xhr.send();
      }
      
      Component.onCompleted: {
          request()
      }
      

      }

      suerte!

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved