기본 제공 루틴 HttpQueryInfo는 실제 바이트가 아닌 문자열을 반환합니다. 일반적으로 문제가되지 않습니다.WinInet HttpQueryInfo가 원시 바이트를 반환 할 수 있습니까? (유니 코드 문자가있는 HTTP 헤더)
그러나 요즘 위치 헤더 필드에 백분율로 인코딩되지 않은 유니 코드/또는 URL을 포함하는 리디렉션을 보내는 서버에 문제가 발생하기 시작 했습니까? 문자. 이 주변의 어떤 방법?
var
vContent_Wide: WideString;
begin
vBufferSize := 4096;
GetMem(vBufferPtr, vBufferSize);
while True do
begin
TmpFakeCardinal := 0;
vErrorNone := HttpQueryInfo(
hHttpOpen_Request,
HTTP_QUERY_RAW_HEADERS_CRLF,
vBufferPtr,
vBufferSize,
TmpFakeCardinal
);
if (vErrorNone = False) then
begin
vErrorID := GetLastError;
if (vErrorID = ERROR_INSUFFICIENT_BUFFER) then
begin
FreeMem(vBufferPtr);
GetMem(vBufferPtr, vBufferSize);
end
else Break;
end
else
begin
vContent_Wide := PWideChar(vBufferPtr);
Result := vContent_Wide;
Break;
end
;
end;
FreeMem(vBufferPtr, vBufferSize);
질문을 편집하십시오 : 사용하는 특정 Delphi 버전의 태그를 추가하십시오. HttpQueryInfoA 또는 HttpQueryInfoW를 호출하면 명확하지 않습니다. –
vContent_Native 란 무엇입니까? Whatr은 msxCopyPCharToStr입니까? 선언을하지 마십시오! –
코드의 주석은 그것을 보여줍니다. Delphi 2007은이를 HttpQueryInfoA에 매핑하고 Delphi XE2 (모든 유니 코드 버전)는이를 HttpQueryInfoW에 매핑합니다. (그리고 vContent_Native는 해당 문자열 유형입니다.) – Tom