Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Download file mediante richiesta POST

    Devo fare uno script che, lanciato periodicamente, scarichi un file da un sito, il problema è che questo file non ha un link diretto in GET, ma si scarica con un bottone "download" che invia una richiesta POST...

    con questa funzioncina riesco a mandare la richiesta post correttamente:

    Codice PHP:
    function PostRequest($url$referer$var
    {
     
        
    //converto le variabili dell'array in una stringa
        
    $data = array();    
        foreach (
    $var as $k=>$v)
            {
                
    $data[] = "$k=$v";
            }    
        
    $data implode('&'$data);

        
    //parsing dell'url
        
    $url parse_url($url);
        if (
    $url['scheme'] != 'http')  die('Only HTTP request are supported !');
        
    $host $url['host'];
        
    $path $url['path'];

        
    //Apro un socket verso l'host
        
    $fp fsockopen($host80);

        
    //Invio la richiesta post
        
    fputs($fp"POST $path HTTP/1.1\r\n");
        
    fputs($fp"Host: $host\r\n");
        
    fputs($fp"Referer: $referer\r\n");
        
    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
    fputs($fp"Content-length: "strlen($data) ."\r\n");
        
    fputs($fp"Connection: close\r\n\r\n");
        
    fputs($fp$data);

        
    //Preparo un file di output
        
    $output fopen('output','w');

        while(!
    feof($fp)) 
        {
            
    //ricevo la risposta
            
    $temp fread($fp,128);
            
    fwrite($output,$temp);
        }

        
    //chiudo socket e file 
        
    fclose($fp);
        
    fclose($output);
    /

    ....ma:

    1) (problema minore) scrivendo tutto sul file mi scrivo anche gli header.. mi chiedevo se c'era un metodo rapido di parsing per scartare l'header man mano che arriva, altrimenti me lo faccio io con un ciclo che legge carattere per carattere fino a che non trova la fine dell'header (\r\n\r\n).. chiedo conferma della correttezza.

    2) probelma vero:

    il file originale, scaricato a mano dal browser, inizia così:

    TC TOG GO_Term ET_Name Tentative_Annotation Unique_Oligo

    TC302922 apomucin;submaxillary mucin^^submaxillary apomucin [Sus scrofa domestica] Cluster: Submaxillary apomucin; n=1; Sus scrofa domestica|Rep: Submaxillary apomucin - Sus scrofa, complete GACGAGAGTATGACCAAGGAAGTGTCACCTCAGTTGGCTGCAACAAATGT ACTTGCATAAAAGGATCTTG

    etc etc
    Il file scaricato dallo script inizia (dopo l'header che per ora non sto scartando) così:

    1


    3a
    TC TOG GO_Term ET_Name Tentative_Annotation Unique_Oligo


    109
    TC302922 apomucin;submaxillary mucin^^submaxillary apomucin [Sus scrofa domestica] Cluster: Submaxillary apomucin; n=1; Sus scrofa domestica|Rep: Submaxillary apomucin - Sus scrofa, complete GACGAGAGTATGACCAAGGAAGTGTCACCTCAGTTGGCTGCAACAAATGT ACTTGCATAAAAGGATCTTG

    etc etc
    insomma, tra una riga e l'altra ci sono ei caratteri spuri che non capisco da dove vengono fuori.... qualche idea?

  2. #2
    Perchè non usi le funzioni CURL?

    Impostando CURLOPT_FILE, puoi fargli salvare il contento della risposta direttamente e fargli scartare gli header con CURLOPT_HEADER impostato a FALSE.

  3. #3
    Originariamente inviato da filippo.toso
    Perchè non usi le funzioni CURL?

    Impostando CURLOPT_FILE, puoi fargli salvare il contento della risposta direttamente e fargli scartare gli header con CURLOPT_HEADER impostato a FALSE.
    guarda, per l'header ho risolto da quando ho postato.. mi so' fatto il ciclo che lo scarta e buonanotte.. resta i problemi di que caratteri strani...

    mai usato curl, se mi fai un esempietto ci provo...

    muchas gracias

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.