DIOCP V5版本中发现的小BUG
单元文件 utils_strings 中
function TDBufferBuilder.ToString: String; begin CheckNeedSize(2); FData[FSize] := 0; FData[FSize + 1] := 0; {$IFDEF MSWINDOWS} {$IF (RTLVersion>=26) and (not Defined(NEXTGEN))} TEncoding.Default.GetString(FData, 0, self.Length); //这句有BUG {$ELSE} Result := StrPas(PAnsiChar(@FData[0])); {$IFEND >=XE5} {$ELSE} Result := TEncoding.Default.GetString(FData, 0, self.Length); {$ENDIF} end;
中的
TEncoding.Default.GetString(FData, 0, self.Length);
应修改为
Result := TEncoding.Default.GetString(FData, 0, self.Length);
否则调用 Request.GetBodyAsString; 时,无法获取HTTP 中的 body值