Hi!
Ich kann mir leider nicht so wirklich vorstellen, wo der Fehler sein könnte; könnte ja auch verschiedene Ursachen haben. Versuch doch einmal alle Zeichen im Intervall 0-32 und eventuell 126-255 zu kodieren; ich könnte mir nämlich vorstellen, dass CURL bei einem gewissen Zeichen abbricht, weil es das Zeichen als Steuercode interpretiert und den String zu früh als beendet interpretiert...
Hm. Auf alle Fälle ist das was da am anderen Ende ankommt kein gültiger gzip String. Ich kann mir das miot den Zeichen als Steuercode nicht vorstellen, denn ich übergebe den Binärcode komplett ab die Standardeingabe von Curl, da sollte Curl eigentlich egal sein was da kommt, das ist binärcode und der wird soweit ich den header verstehe ist das der entscheidene Teil:
¾ß@.j.P.C÷zE..--
curlKRTz6g8xhQF8
Phqz3iLuawNTPl4.
.Content-Disposi
tion: form-data;
name="clientdat
a"; filename="-"
..Content-Type:
text/plain....xœ
¥QQj.!.ýž[ä.în.ã
Mú+$2‰‚:A„=oÏà×|
4îÒ.”‚¾$ï%&Á .¦b
ÊA...--curlKRTz6
g8xhQF8Phqz3iLua
wNTPl4--..
--curlKRTz6g8xhQF8Phqz3iLuawNTPl4 ist doch dieser boundary-String oder wie das hieß, und der ist dann wieder am Ende, was dazwischen kommt sollte doch recht egal sein, oder? Das Problem muß schon vorher passieren, denn der gz-String den ich in PHP mit gzcompress()(nicht gzinflate!) erzeuge ist ja korrekt, das habe ich breits geprüft. Ich öffne ja die Shell(Dos) mit popen(), und übergebe mit fputs() den gz-String an die Standardeingabe von curl. vermutlich passiert da unterwegs irgendwas unvorhergesehenes, kann ja auch ein bug in der Windowsversion von Curl oder PHP oder auch Windows2000 selbst sein, aber es wäre schon etwas vermessen wenn ich das ganze jetzt auf einen bug schiebe, vermutlich habe ich einen Fehler gemacht, nur wo?
Vielleicht sollte ich --data-binary versuchen?
To post data purely binary, you should instead use the
--data-binary option.
--data-binary <data>
(HTTP) This posts data in a similar manner as --data-
ascii does, although when using this option the entire
context of the posted data is kept as-is. If you want
to post a binary file without the strip-newlines fea-
ture of the --data-ascii option, this is for you.
aber das hat so nicht funktioniert(wenn ich einach --form durch --data-binary ersetze). Vor allem wird das ja nicht als multipart/form-data übertragen, oder?
Ich habe mir mal bei Curl stderr ausgeben lassen, im Fall das es scheitert(zu langer String) bekomme ich:
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
100 220 0 0 100 220 0 912 0:00:00 0:00:00 0:00:00 912
100 220 0 0 100 220 0 876 0:00:00 0:00:00 0:00:00 0
100 262 0 42 100 220 74 392 0:00:00 0:00:00 0:00:00 0
100 522 0 302 100 220 391 285 0:00:00 0:00:00 0:00:00 154
100 522 0 302 100 220 391 285 0:00:00 0:00:00 0:00:00 154
Mit dem kürzeren String, wo es funktioniert erhalte ich:
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
100 520 0 0 100 520 0 158 0:00:03 0:00:03 0:00:00 158
100 520 0 0 100 520 0 151 0:00:03 0:00:03 0:00:00 0
100 1294 0 774 100 520 211 142 0:00:03 0:00:03 0:00:00 684
100 1378 0 858 100 520 234 142 0:00:03 0:00:03 0:00:00 911
Ich verstehe inzwischen überhaupt nichts mehr inzwischen läuft noch nicht mal mehr die Variante mit --data. es ist reiner Zufall ob CURL den String nun überträgt oder nicht. Und bei der --data Variante war das ganze noch urlencodet! Also da ist bestimmt nichts mit Sonderzeichen. Wie gesagt, nur ganz bestimmt Strings funkrionieren, die meisten aber nicht. Ich teste jetzt schon wiedr seit Stunden, wobei ich langsam glaube das Curl dochnicht das richtige ist. Vermutlich ist es nur ne KLeinigkeit, aber die werde ich wohl nicht mehr finden...
depressive Grüße,
Andreas