Ergebnis 1 bis 18 von 18

Thema: Frage zur Request Klasse

  1. #1
    Contao-Nutzer
    Registriert seit
    19.08.2009.
    Beiträge
    18

    Standard Frage zur Request Klasse

    Hi liebes Forum

    Ich hab da ein Problem und zwar arbeite ich gerade mit der Request-Klasse um eine API aufzurufen. Dabei schreibt mir Typolight immer eine zusätzliche Zeile am Anfang und ans Ende. Zuerst bin ich davon ausgegangen, dass die Zahl welche in der ersten Zeile es die Gesamtlänge des Strings darstellt und die zweite letzte Zeile mit einer Null das Ende anzeigt. Aber nach einer kurzen Überprüfung bin ich zu dem Schluss gekommen, dass dies nicht sein kann.

    Kann mir einer sagen was die Zahlen bedeuten und kann man sie irgendwie verhindern? Oder muss ich sie selbst raus löschen?

    Grüße BruderFlexo

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ich glaube andreas.schempp hatte irgendwo genau das gleiche Problem...mach ihm mal eine PM!
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Nutzer
    Registriert seit
    19.08.2009.
    Beiträge
    18

    Standard

    Danke!

    Ich hab Andreas mal angeschrieben.

    Ich hab mir auch die anderen Requests im Typolight angeschaut, wie z.B. im Rep oder LiveUpdate, aber komischerweise tritt das Problem dort nicht auf.

    Unterdessen schätze ich die erste Zahl / Zeile als die Größe der Daten als Hex ein und die Null als EOF Marker ein.

    Gruß BruderFlexo

  4. #4
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Andreas hatte eben ziemlich das gleiche Problem und das war irgendwie wegen dem Header, da gibt's eine ganze Diskussion dazu in einem Ticket. Aber Leo antwortet dort scheinbar nicht mehr
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  5. #5
    Contao-Nutzer
    Registriert seit
    19.08.2009.
    Beiträge
    18

    Standard

    Hast du mal einen Link zu dem Thread, weil ich ihn nicht gefunden habe.

    Ich hab jetzt schnell ein Workaround gemacht, aber das ist natürlich keine Lösung.

    Gruß Bruderflexo

  6. #6
    Contao-Nutzer
    Registriert seit
    19.08.2009.
    Beiträge
    18

    Standard

    So hab den Trac Thread/Ticket gefunden.

    Gruß Bruderflexo

  7. #7
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Koennte es sein, dass du evtl. im Header "Transfer-Encoding: chunked" uebersehen hast?

    Wenn ja, empfehle ich dir in deinem Objekt folgendes hinzuzufuegen.
    PHP-Code:
        private function decode_chunked($string=null) {
            
    $lines explode("\r\n",$string);
            
    $i=0;
            
    $length 999;
            
    $content '';
            foreach(
    $lines as $line) {
                
    $i++;
                if (
    $i%== 1) {
                    
    $length hexdec($line);
                } elseif (
    $length == strlen($line)) {
                
    $content .= $line;
            }
                if (
    $length == 0)
                    break;
            }
            return 
    $content;
        }

        protected function 
    makeRequest($httpURL)
        {
            
    $objRequest $this->request;
            
    $objRequest->send($httpURL);
            if(
    array_key_exists('Transfer-Encoding'$objRequest->headers) && $objRequest->headers['Transfer-Encoding'] == 'chunked')
                
    $response $this->decode_chunked($objRequest->response);
            else
                
    $response $objRequest->response;
            return 
    $response;
        } 
    Die Funktion makeRequest kannst du ja nach belieben aendern, wichtig ist jedoch der check auf Transfer encoding, welcher das ggf. fixt.

    Das Problem resultiert daraus, dass die Request Klasse in TL vorgibt HTTP 1.1 zu sprechen, worin chunked transfer encoding vorgeschrieben wird (siehe hierzu RFC).

    Hoffe es hilft dir (und anderen evtl auch).
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  8. #8
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.520
    User beschenken
    Wunschliste

    Standard

    diese hier habe ich in meinem Banner Modul im Einsatz:
    PHP-Code:
    private function decodeChunked($chunked)
        {
            
    $decBody '';
            
    $m '';
            while (
    trim($chunked)) {
                
    preg_match("/^([\da-fA-F]+)[^\r\n]*\r\n/sm"$chunked$m);
                
    $length hexdec(trim($m[1]));
                
    $cut strlen($m[0]);

                
    $decBody .= substr($chunked$cut$length);
                
    $chunked substr($chunked$cut $length 2);
            }
            return 
    $decBody;
        } 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  9. #9
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Frage nebenbei: Wäre das nicht etwas, was in den Core gehören würde?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  10. #10
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Doch, eigentlich schon, schliesslich wyrde die Request Klasse dadurch RFC-konformer.
    Meiner Meinung nach sollte da auch noch gzip encoding eingebaut werden (ist wenig Aufwand) um Bandbreite zu sparen.

    Die Frage ist jedoch, wo zieht man die Grenze zum light und sollte man nicht einfach eine Extension schreiben, welche ein grosser Bruder der Request Klasse ist.

    Ich denke, letzteres waere wohl doch das Beste, mal sehen ob ich mich in den naechsten Tagen daran setzen kann (zumindest ein grobes lineout zu verfassen).

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  11. #11
    Contao-Nutzer
    Registriert seit
    19.08.2009.
    Beiträge
    18

    Standard

    Es gibt ja bereits ein Ticket von daher sollte man eine Erweiterung mit Leo absprechen. Schließlich wollte er es im nächsten Release ändern.

    Gruß BruderFlexo

  12. #12
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.621
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Es gibt ein Ticket dazu, mag jetzt nicht übers iPhone danach suchen ;-)
    das Problem wir in 2.7.3 behoben. Bis dahin kannst du in deiner Request-Klassen den Teil von "HTTP 1.1" auf "HTTP 1.0" ändern.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  13. #13
    Contao-Hauptentwickler
    AG Core-Entwicklung
    Avatar von leo
    Registriert seit
    05.06.2009.
    Ort
    Wuppertal
    Beiträge
    816

    Standard

    Die geplante "Behebung" des Fehler sieht aber auch nur so aus, dass die Request-Klasse wieder HTTP/1.0-Header schickt. Eine richtige HTTP/1.1-Kompatibilität würde ich allerdings schon begrüßen.

  14. #14
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Beitrag Update

    Zitat Zitat von leo Beitrag anzeigen
    Die geplante "Behebung" des Fehler sieht aber auch nur so aus, dass die Request-Klasse wieder HTTP/1.0-Header schickt. Eine richtige HTTP/1.1-Kompatibilität würde ich allerdings schon begrüßen.
    Schreibe gerade eine Klasse namens "RequestExtended", welche ich fyr eins meiner Module benoetige.
    Implementiert ist bislang:
    • Useragent kann ueberschrieben werden.
    • Direktverbindungen auf ipV6 sollten funktionieren.
    • getUrlEncoded()
    • postUrlEncoded()
    • postMultipartFormdata() (inklusive einer wrapperklasse welche die Daten entsprechend aufbereitet).
    • send() (mit zur "normalen" Requestklasse kompatibler Syntax)
    • Empfangen, parsen, setzen von Cookies.
    • Transfer-Encoding/Content-Encoding(bislang nur bei Responses, noch nicht bei postdata):
      • chunked,
      • (x-)gzip,
      • deflate.

      (Compress folgt, sobald ich LZW akzeptabel decodieren kann).


    Dies nur mal als Vorschau was ich schon habe, weiteres kommt noch.
    Ich frage mich jedoch gerade, wie ich die Dateien "RequestExtended.php" und "MultipartFormdata.php" dann im TL_ROOT positionieren soll.
    Ein Modul ist es ja nicht, kann ich die gefahrlos nach "TL_ROOT/system/libraries" packen lassen oder doch lieber ein "leeres" Modulverzeichnis, welche dann diese beinhaltet? Welcher Ort ist "der Richtige"?

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  15. #15
    Contao-Hauptentwickler
    AG Core-Entwicklung
    Avatar von leo
    Registriert seit
    05.06.2009.
    Ort
    Wuppertal
    Beiträge
    816

    Standard

    Die Dateien sollen sowohl im Ordner system/libraries als auch in einem separaten Modulordner vom Autoloader gefunden werden.

  16. #16
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von leo Beitrag anzeigen
    Die Dateien sollen sowohl im Ordner system/libraries als auch in einem separaten Modulordner vom Autoloader gefunden werden.
    Das ist mir bekannt.
    Ich meinte jedoch aus "logischer" Sicht.
    Also wo der gefyhlt richtige Platz ist. Momentan tendiere ich zu libraries, da es wie gesagt ja kein Modul descendant ist, sondern nur eine Supporter Klasse.
    Die Frage sollte nicht heissen, "Wo funktioniert es" sondern "Wo erwartet ein Entwickler intuitiv diese Klassen zu finden."

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  17. #17
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.621
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich denke auch das libraries der richtige Ort ist.
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  18. #18
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    831

    Standard

    Als ich begann, die Erweiterung cm_membergooglemaps zu schreiben, hatte ich auch danach gesucht. Ich hatte mich dann entschieden, die Anfragen (geocoding) mit cURL umzusetzen. Das funktioniert aus ganz gut. Allerdings würde ich schon gern "framework-interne" Funktionen nutzen.
    Wer Lust hat, kann sich das ja mal ansehen (https://contao.org/erweiterungsliste...010005.de.html
    Gruß ChrMue
    Geändert von ChrMue (01.09.2009 um 20:51 Uhr) Grund: tippfehler ;-)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Bad Request
    Von Grete Gräte im Forum Sonstiges zu Contao
    Antworten: 1
    Letzter Beitrag: 15.03.2011, 13:06
  2. Frage zur Klasse "active"
    Von NoName26 im Forum Layout / Templates / Holy Grail
    Antworten: 9
    Letzter Beitrag: 23.02.2011, 14:48
  3. A tiny feature request
    Von Anke im Forum backupDB
    Antworten: 0
    Letzter Beitrag: 25.05.2010, 14:22

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •