Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143

    [CURL - PARSE Exeption] non trova il tag </entry>

    Ciao a tutti. Sto cercando di dialogare con le API di Google Website Optimizer. Il tutto avviene facendo delle richieste post tramite cUrl.

    Il passo dell'autenticazione è stato superato da tempo ( ), ora arriva la vera e propria fase di dialogo. Mi spiego.

    Per creare un Multivariate Experiment (non mi soffermo, tanto non è i focus della discussione) devi inviare un XML ad un certo URL indicato sulla guida di google.

    L'XML da inviare è questo.

    Codice PHP:
    <entry xmlns='http://www.w3.org/2005/Atom'   
         
    xmlns:gwo='http://schemas.google.com/analytics/websiteoptimizer/2009'        
         
    xmlns:app='http://www.w3.org/2007/app'     
         
    xmlns:gd='http://schemas.google.com/g/2005'>     
      <
    title>Multivariato da console</title>   
      <
    gwo:analyticsAccountId>XXXXXX</gwo:analyticsAccountId>     
      <
    gwo:experimentType>Multivariate</gwo:experimentType>
     </
    entry
    (nelle X c'è il mio account analytics)

    il codice per inviare l'xml invece è questo


    Codice PHP:
    //inizializziamo la risorsa curl
    $ch curl_init();

    //dati della richiesta
    $file fopen("/xml/experiment.xml","r");
    $contenuto fread($file,filesize("/xml/experiment.xml")); 
    $content_length strlen($contenuto); 

    //header della richiesta
    $campoheader 'Authorization: GoogleLogin auth="......"';
    $campi_header = array('GData-Version: 2.0',     
                            
    'Content-type: application/atom+xml; charset=UTF-8',                       
                            
    'Content-length:'.$content_length,                       
                            
    $campoheader);  

    curl_setopt($ch,CURLOPT_HTTPHEADER,$campi_header);  
    curl_setopt($chCURLOPT_POST1); 
    //dati della richiesta 
    curl_setopt($chCURLOPT_POSTFIELDS$contenuto); 
    //url
    $url 'https://www.google.com/analytics/feeds/websiteoptimizer/experiments'

    curl_setopt($chCURLOPT_URL$url); 
    curl_setopt($chCURLOPT_HEADERfalse); 
    curl_setopt($chCURLOPT_RETURNTRANSFER,true);
    curl_setopt($chCURLOPT_MUTEfalse);
    $output curl_exec($ch); 

    //chiudo la risorsa 
    curl curl_close($ch); 
    mentre l'errore che mi viene restituito nella risposta è questo.



    codice:
    GData ParseException The element type "entry" must be terminated by the matching end-tag "</entry>".
    Qui l'http code
    codice:
    'http_code' => int 400
    Il bello è che se tutte queste operazioni le eseguo da linea di comando tutto funziona perfettamente.

    Qualcuno ha qualche consiglio da darmi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143
    up

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    cerca di fare un var_dump($contenuto) prima di curl_setopt($ch, CURLOPT_POSTFIELDS, $contenuto);
    per assicurarti che il tuo script manda effettivamente i dati interi.

    Poi, non so come google gestisca questo, ma altre osservazioni che posso fare, sono queste: e' meglio usare file_get_contents al posto di fread, se vuoi soltanto leggere i dati da un file. Tra l'altro, la libreria curl riesce a leggere da sola il file (es. curl_setopt($ch, CURLOPT_POSTFIELDS, '@/path/al/file'); o qualcosa del genere)

    Poi c'e' una differenza importante tra il curl riga di commando, e la libcurl di php.
    Se tu mandi un post dalla shell con curl --request POST --data '@file' - il file verra inviato cosi' com'e', cioe se non e' urlencoded, curl non lo codifichera.
    Se tu invece mandi un post con libcrul in php, e passando a CURLOPT_POSTFIELDS una stringa non codificata, lui la codifica automaticamente in multipart/form-data. Se gliela passi invece gia' codificata, lui manda i dati in application/x-www-form-urlencoded.


    Secondo me, se non sbagli niente nel file xml, e se lo leggi correttamente, dovresti solo giocare un po' con le codifiche.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.