Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: socket per xml service

  1. #1

    socket per xml service

    utilizzo le funzioni socket per effettuare delle richieste a un servizio xml, inserendo l'accept gzip mi viene restiuito un resposnse compresso, come posso fare per leggerlo correttamente? cio, decomprimerlo?

    ecco la part edello script interessata:

    Codice PHP:
      $address URLAPI;
      
    $url 'Xml';
      
    $service_port "80";
      
    $socket socket_create (AF_INETSOCK_STREAM0);
      if (
    $socket 0){
        print 
    "Could not create socket";
        die();
      }
      if (!@
    socket_connect ($socket$address$service_port)) {}
      
    $length strlen($request);
     
    // $in = "POST /$url HTTP/1.0\r\nContent-Type: text/xml\r\n"."HOST:$address\r\nAccept-Encoding: gzip\r\nContent-Length: $length\r\n\r\n$request";
      
    $in "POST /$url HTTP/1.0\r\nContent-Type: text/xml\r\n"."HOST:$address\r\nContent-Length: $length\r\n\r\n$request";
      
    $out '';
      
    $esitosocket=socket_write($socket$instrlen ($in));
      if (
    $esitosocket===false) {
          
    header("location:/");
        exit();
      }
      while (
    $out = @socket_read ($socket32768)) {
        
    $temp $temp."$out";
      } 

  2. #2

  3. #3
    Ho provato con entrambi i comanid ma non restituisce nulla, stringa vuota, probabilmente dipende dall'output?

    quesot un esempio di output che ne risulta:

    Codice PHP:
    HTTP/1.0 200 OK
    Content
    -Typetext/xml
    Content
    -Length637
    Content
    -Encodinggzip

           VQo0
    ~fi{XF"A`ڲ"Wfͱ3)׉4!:m7}_!{"w*}+Ķ2Y߻0-s.~1?    *<iT~XW㏷dIгSv67I3cH_Ҷ{̍!x _ϊ{ߴv;'r6I#RCU4bJq=PAmݷ#XC0qP̔!ZdLERi2p2 NS_-aa"x1h~s@1*ʓWZGq%/d3T`ksVb] Q̰=IR0Ë1v{.Av
    K_&<q]%_&BeLSVՏ ԇLtUOSyᚹĪO_Jk]쁓f,!_}EF
    ~=j+K*ؖrxH1\n=F*ki9ҡ2dlF
    x=Dvf*S].~
    `l4x{7|)Păi=طYw_A
    @A\QrOyvcuMٽGϰodXaUŃ A3!iYo_č

  4. #4
    Ovviamente devi eseguire la decompressine SOLO sul contenuto compresso, non sugli header.

  5. #5
    a ecco, il dubbio era giusto ... come mi conviene estrarlo? con un explode o un substr?

  6. #6
    Estrai tutto il cotenuto che si trova dopo i primi due \r\n consecutivi.

  7. #7
    mi becco un bel Data Error ... sto contattando chi mi ha fornito l'xml per vedere cosa mi dicono

  8. #8
    Ho fatto una prova, ho compresso un file txt in gz e poi l'ho aperto con il comando file_get_contents e assegnato ad una variabile , esenguendo sia il comando gzuncompress che gzinflate non succede nulla.

  9. #9
    Usa HTTP/1.1 e soprattutto riaggiungi l'Accept-Encoding cos

    Accept-Encoding: deflate\r\n

    detto questo, siccome dovresti scriverti un parser per le risposte del protocollo HTTP per poter gestire correttamente le varie situazioni, perch non usi le curl? ( www.php.net/curl )

  10. #10
    apparte il tuo consiglio ma se leggo un file gz e poi gli applico il comando gzuncompress cmq dovrebbe funzionare? forse un problema di moduli sul server?

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.