AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
Thema durchsuchen
Ansicht
Themen-Optionen

PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

Ein Thema von luisk · begonnen am 27. Mai 2016 · letzter Beitrag vom 30. Mai 2016
Antwort Antwort
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#1

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

  Alt 29. Mai 2016, 13:37
Mich würde dennoch interessieren,
ob man das nicht auch mit einer Delphi-Funktion wie gZDecompressStr() hinbekommt.
Natürlich kriegt man das hin. Höchstwahrscheinlich ist es ein Encoding Problem. Du könntest man versuchen ein base64 Encode / Decode darüber laufen zu lassen. Damit hast du zwar wieder mehr Traffic (also das ist nicht sinnvoll für die Produktion), aber du kannst testen ob es ein Problem auf dem Übertragungsweg ist. Da kann ich dir aber nicht helfen; da kein Delphi.

obwohl ich mal versucht habe hier php zu ergänzen:
Du hast die Zeilen aber schon angepasst, oder? Der Pfad ist ja nur ein Beispielpfad. Außerdem würde ich das IfModule weglassen.

weitere Erkenntnis:
wenn ich nun in mein php-Script folgende Zeile einfüge:
ob_start('ob_gzhandler');
und TIdHTTP.Compressor:=TIdCompressorZLib;
dann klappt es
Wenn ich TIdHTTP.Compressor:=TIdCompressorZLib; weglasse, dann sehe ich, dass ein gezippter String kommt
So, später schaue ich mir dann mal WireShark ohne Firewall an.
Das kannste auch so machen, natürlich. Du könntest den Content-Encoding Header mit PHP dann auch selbst setzen um standardkonform zu bleiben.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#2

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

  Alt 29. Mai 2016, 13:41
Du könntest den Content-Encoding Header mit PHP dann auch selbst setzen um standardkonform zu bleiben.
Mich würde interessieren wie das geht. Das wäre mir lieber, wenn das klappt.

wenn ich ob_start('ob_gzhandler'); in php weglasse, wird nicht gezippt.

 AddOutputFilterByType DEFLATE text/php text/plain bringt nichts

Geändert von luisk (29. Mai 2016 um 13:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#3

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

  Alt 29. Mai 2016, 14:34
bei das Entzippen über die Indy-Komponente funktioniert anscheinend nur,
wenn der Webserver das Zippen unterstützt:
daher:
Delphi-Quellcode:
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
   ob_start('ob_gzhandler');
else
   ob_start();
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#4

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

  Alt 29. Mai 2016, 14:35
Du könntest den Content-Encoding Header mit PHP dann auch selbst setzen um standardkonform zu bleiben.
Mich würde interessieren wie das geht. Das wäre mir lieber, wenn das klappt.
Code:
header('Content-Encoding: gzip');
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#5

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

  Alt 29. Mai 2016, 22:09
Jetzt würde mich doch noch interessieren, wie man
einen PHP gzcompress()string mit Delphi ZDecompressStr() entpacken kann.

Ich vermute, da muss die byte-Reihenfolge getauscht werden
https://de.wikipedia.org/wiki/Byte-Reihenfolge
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error

  Alt 30. Mai 2016, 11:27
Am besten gar nicht , und zwar das mit den Strings , Binäre Daten und Strings sind immer eine Schlechte Idee.

Und wenn dann müssen durchgängig die selben Stringtypen verwendet werden,
so wie wie hier php sendet UTF-8 und dann wirds in Delphi in einen Widestring konvertiert also landen zusätzliche Bytes im String
und schon ist vorbei mit den Daten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz