Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    5

    Leggere e salvare XML da web service

    Ciao a tutti,
    per prima cosa mi presento sono nuovo del forum e cerco di cimentarmi nella programmazione del php, la mia esperienza è base direi e sto cercando di capire come e con quali funzioni riesca a salvare un xml che mi ritorna da un web service.

    il link che lancio dal browser è del tipo "https://webservice.xxxl.com/?action...y&user=xxx&passwd=zzz" e mi compare un file di risposta .xml.

    come posso leggere e salvare lo stesso sul server web, è possibile farlo con le classi di SimpleXML per esempio?

    Grazie...

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    5

    Problema ssl...

    Ciao a tutti
    Ho approfondito la questione e buttato giù due righe di codice che però ha qualche problemino...

    Codice PHP:
     $url 'https://webservice.abc.com/?action=listcategorie s &usern=xxx&passwd=yyy';     
    $ch curl_init();     
    curl_setopt($chCURLOPT_URL$url);     
    curl_setopt($chCURLOPT_POST);     
    curl_setopt($chCURLOPT_RETURNTRANSFER1);     
    curl_setopt ($chCURLOPT_SSL_VERIFYPEERtrue);  
    $result curl_exec($ch);     
    if (
    $result === false) {         
       die(
    curl_error($ch));     }     
    curl_close($ch);     
    $xmlobj simplexml_load_string($result);     
    echo(
    $xmlobj); 
    se imposto su true la verifica del certificato ssl
    Codice PHP:
    curl_setopt ($chCURLOPT_SSL_VERIFYPEERtrue 
    mi restituisce questo errore

    Codice PHP:
    SSL certificate problemverify that the CA cert is OKDetailserror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 
    se imposto lo stesso su false non ritorna nulla...

    qualcuno può aiutarmi a risolvere?
    Grazie mille!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    così cmq cosa ti darebbe? :

    Codice PHP:
    $url 'https://webservice.abc.com/?action=listcategorie s &usern=xxx&passwd=yyy';      
    $result file_get_contents($url);
    $xmlobj simplexml_load_string($result);      
    echo(
    $xmlobj); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    5
    Ciao eiyen

    grazie per aver risposto... cominciavo a sentirmi solo

    ho provato la tua soluzione ma non mi ritorna nulla, la variabile $result risulta vuota...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova con curl e https: CA, paragrafo "proper fix" e fai sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    5
    Ho provato con curl e https seguendo tutti gli step e salvando il certificato da firefox
    usando questo script:

    Codice PHP:
    $url 'https://webservice.abc.com/?action=listcategorie s &usern=xxx&passwd=yyy';
    $ca getcwd() .'/CAcerts/plesk.crt';

    // Initialize session and set URL.     
    $ch curl_init(); 
    curl_setopt($chCURLOPT_URL$url);          

    // Set so curl_exec returns the result instead of outputting it.     
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);          
    curl_setopt($chCURLOPT_SSL_VERIFYPEERtrue);     
    curl_setopt($chCURLOPT_SSL_VERIFYHOST2);     
    curl_setopt($chCURLOPT_CAINFO$ca);              

    // Get the response and close the channel.     
    $result curl_exec($ch);     
    if (
    $result === false) {         
       echo(
    curl_error($ch));                  
       echo(
    "
    "
    .curl_errno($ch));                  
       echo(
    "
    "
    .curl_getinfo($ch));     
    }     

    curl_close($ch);      
    $xmlobj simplexml_load_string($result);     
    echo(
    $xmlobj); 
    mi restituisce il seguente errore..

    Peer certificate cannot be authenticated with known CA certificates
    60
    Array
    il certificato risulta scaduto nel 2010 potrebbe essere quello il problema?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    sinceramente non ho scorso tutto il tuo posto, ma guardando le ultime cose che hai scritto forse sì (di fatto non è valido)

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    5
    Grazie eiyen per il tuo aiuto

    ho trovato la soluzione qui http://files.benramsey.com/talks/200...b-Services.pdf pagina 28.

    posto il codice sarà sicuramente utile a qualcuno...

    Codice PHP:
    $url 'https://webservice.abc.com/?action=listcategorie s &usern=xxx&passwd=yyy';
    $ResultSet = new SimpleXMLElement($url,null,true);
    echo 
    "<h3>Categorie presenti nel webservice (".count($ResultSet->categories->category).")</h3>";
    echo 
    "[list=1]";     
       foreach(
    $ResultSet->categories as $categories
        {
            foreach(
    $ResultSet->categories->category as $category)
             {
                 if(
    strlen($category[code])<=3){
                     
    $ini='';
                     
    $fin='';
                 }else{
                     
    $ini='<ul>';
                     
    $fin='[/list]';
                 }
                 echo 
    $ini.'[*]'.$category.' ('.$category[code].') '.$fin;
             }
         }
         echo 
    "[/list]"
    alla fine molto più facile di come l'avevo pensata!



    bye

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    meglio così... ciao!

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.