Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    parsare l' xml di risposta di una pagina web

    Ciao a tutti,
    il titolo non è molto chiaro e quindi mi spiego meglio.
    Ho un sistema elettronico che mi fa da server web ed in risposta ad una get ottengo questo:
    codice:
    Content-Type: text/xmltent-Type: text/xml
    Connection: keep-alive
    
    
    <?xml version = \"1.0\" ?>
    <inputs>
    
    
    Qui tutti i vari valori
    
    
    </inputs>
    Come faccio a leggero tramite php ?
    In poche parole vorrei creare una pagina in php che effettua un get al server web e legga la risposta che viene fornita in formato xml.
    Sul web non trovo niente.
    Grazie mille

  2. #2
    http://php.net/manual/en/function.si...-load-file.php

    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Sul web non trovo niente.
    Ahi, ahi, ahi...

  3. #3
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Grazie mille,
    anche se sembra semplice non riesco.
    Codice PHP:
    $url 'http://.........com:801/?aggiorna_XML'
    $xml simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA); 
    if(
    $xml ===  FALSE) { 
     } else { } 
    mi resituisce questo errore

    codice:
    Warning: simplexml_load_file(http://......com:801/?aggiorna_XML): failed to open stream: Connection timed out in /web/htdocs/............................php on line 40 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://................................com:801/?aggiorna_XML" in /web/htdocs/........................................php on line 40
    però se metto l'indirizzo del mio file xml sembra funzionare perché ottengo questo:
    codice:
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    
    <inputs>
    <orario1>18:53:19</orario1>
    <agg_automatico1>1</agg_automatico1>
    <cntd_agg_automatico1>52</cntd_agg_automatico1>
    <termostato1>ON</termostato1>
    <caldo1></caldo1>
    <temp_sala1>20.94</temp_sala1>
    <temp_sala_imp1>21.00</temp_sala_imp1>
    <termosifone_sala1>ON</termosifone_sala1>
    <sala_h1>18</sala_h1>
    <sala_m1>54</sala_m1>
    <sala_s1>59</sala_s1>
    <sala_time_temp01>23:00</sala_time_temp01>
    <sala_temp_time01>17.00</sala_temp_time01>
    <sala_time_temp11>07:30</sala_time_temp11>
    
    
    
    
    ...............
    Cosa sbaglio ?

  4. #4
    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Grazie mille,
    anche se sembra semplice non riesco.
    Codice PHP:
    $url 'http://.........com:801/?aggiorna_XML'
    $xml simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA); 
    if(
    $xml ===  FALSE) { 
     } else { } 
    mi resituisce questo errore

    codice:
    Warning: simplexml_load_file(http://......com:801/?aggiorna_XML): failed to open stream: Connection timed out in /web/htdocs/............................php on line 40 Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://................................com:801/?aggiorna_XML" in /web/htdocs/........................................php on line 40
    però se metto l'indirizzo del mio file xml sembra funzionare perché ottengo questo:
    codice:
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    
    <inputs>
    <orario1>18:53:19</orario1>
    <agg_automatico1>1</agg_automatico1>
    <cntd_agg_automatico1>52</cntd_agg_automatico1>
    <termostato1>ON</termostato1>
    <caldo1></caldo1>
    <temp_sala1>20.94</temp_sala1>
    <temp_sala_imp1>21.00</temp_sala_imp1>
    <termosifone_sala1>ON</termosifone_sala1>
    <sala_h1>18</sala_h1>
    <sala_m1>54</sala_m1>
    <sala_s1>59</sala_s1>
    <sala_time_temp01>23:00</sala_time_temp01>
    <sala_temp_time01>17.00</sala_temp_time01>
    <sala_time_temp11>07:30</sala_time_temp11>
    
    
    
    
    ...............
    Cosa sbaglio ?
    Credo tu debba abilitare allow_url_fopen nel tuo file php.ini, se non puoi modificare le impostazioni dovrai usare la funzione curl.

  5. #5
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Credo tu debba abilitare allow_url_fopen nel tuo file php.ini, se non puoi modificare le impostazioni dovrai usare la funzione curl.
    Ho controllato ed è su on,

    Forse è come imposto la pagina XML

  6. #6
    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Ho controllato ed è su on,

    Forse è come imposto la pagina XML
    Il "failed to open stream" significa che non riesce affatto ad accedere al file, prova ad applicare urlencode() al path
    codice:
    $url = 'http://.........com:801/?aggiorna_XML'; 
    $xml=simplexml_load_file(urlencode($url));

  7. #7
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Il "failed to open stream" significa che non riesce affatto ad accedere al file, prova ad applicare urlencode() al path
    codice:
    $url = 'http://.........com:801/?aggiorna_XML'; 
    $xml=simplexml_load_file(urlencode($url));
    Il problema non si risolve, è possibile che creo la pagina in maniera errata ? questo è il codice in C che produca la pagina da prelevare:
    codice:
    client.println("HTTP/1.1 200 OK");
              if (HTTP_req.indexOf("aggiorna_XML") > -1) {
                client.println("Content-Type: text/xml");
                client.println("Connection: keep-alive");
                client.println();
                XML_response(client);
              }
    
    void XML_response(EthernetClient cl){
      cl.print("<?xml version = \"1.0\" ?>");
      cl.print("<inputs>");
    
      cl.print("<orario1>");
    
           if (hour()<10){
              cl.print("0");
           }
           cl.print(hour());
           cl.print(":");
           if (minute()<10){
            cl.print("0");
           }
           cl.print(minute());
           cl.print(":");
           if (second()<10){
            cl.print("0");
           }
           cl.print(second());
      cl.println("</orario1>");
     etc.......
    
      cl.print("</inputs>");
    
    }

  8. #8
    Quote Originariamente inviata da inventor4fun Visualizza il messaggio
    Il problema non si risolve, è possibile che creo la pagina in maniera errata ?
    Stando all'errore che hai postato, non è un problema di parsing, ma un errore a monte: PHP non riesce a recuperare il file.

  9. #9
    Ho capito una cosa in più ma non mi aiuta a risolvere.
    Controllando il serial monitor dell'Arduino (il server) mi sono accorto che se apro la pagina Arduino riceve la richiesta con il GET e manda la risposta, se però uso
    $url ='http://.........com:801/?aggiorna_XML';$xml=simplexml_load_file(urlencode($url));
    Arduino non riceve nessun get e quindi non manda la risposta.
    Come faccio a mandare un get e gestire la risposta ?
    Grazie mille


  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Prova a fare un file_get_contents sull'url e vedi se recuperi l'xml

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.