Das sollten lesbare Bytes sein. Ich würde es an deiner Stelle also etwa so machen (Achtung, die Namen der ECB-Member mußt du evtl. anpassen):
Delphi-Quellcode:
var x:
String; dwSize:DWORD;
// Größe aus ECB ermitteln
dwSize = ECB.cbAvailable;
// Größe des Stringpuffers festlegen (+1 wegen Nullterminierung)
SetLength(x, dwSize+1);
// Puffer mit NUllen füllen
ZeroMemory(@x[1], dwSize+1);
// Daten lesen
ECB.ReadClient(ConnID, Pointer(@x[1]), dwSize);
// Größe an echte Stringlänge anpassen - HTTP sendet normal nur printable ASCII, kein EASCII
SetLength(x, lstrlen(@x[1]));
Wenn natürlich der Content-Type etwas anderes aussagt, mußt du unter Umständen die Daten konvertieren, zB von UTF8 nach WideString oder sowas.
Statt ECB.ReadClient() könnte theoretisch auch ein
Code:
CopyMemory(@s[1], ECB.lpbData, dwSize);
gehen! Wie gesagt, ich kann es selber nicht testen und das letztemal hatte ich mit
ISAPI vor 3 oder 4 Jahren zu tun.