Я реализую веб-сервер с использованием Ms http server api
v2 (в синхронном режиме), и я пытаюсь проверить его из веб-браузера.HttpSendHttpResponse не отправлено данных
Я отправляю запрос GET из браузера в http://localhost:50000/uri/, и мое приложение получает его правильно. Затем я отправляю ответ с некоторыми данными в (HTTP_DATA_CHUNK
) с использованием HttpSendHttpResponse
, и я получаю 131 байт. Однако браузер не получает никаких данных. Я также проверил его с клиентом wininet
с тем же результатом.
Это мой отправить код ответа (Smalltalk):
sendResponse: aString
| data response sent id return |
data := HTTP_DATA_CHUNK external
data
DataChunkType: 0;
pBuffer: aString copyToExternalMemory;
BufferLength: aString size.
response := HTTP_RESPONSE_V2 external.
response
version1;
StatusCode: HTTP_STATUS_OK;
reason: 'Ok';
ContentType: 'text/html';
EntityChunkCount: 1;
dataChunk: data.
sent := ExternalLong external.
return := HttpServerDLL current
HttpSendHttpResponse: handle
RequestId: request id
Flags: 0
pHttpResponse: response asParameter
pCachePolicy: 0
pBytesSent: sent asParameter
pReserved2: 0
Reserved3: 0
pOverlapped: 0
pLogData: 0.
return = 0 ifFalse: [^self osError: return].
^sent asInteger
Любая идея о том, почему, если успех функция HttpSendHttpResponse и указывает на то, что п байт был послан, клиент не получает данные?
Спасибо, Sebastian
В случае, если вы не знаете, вы не увидите этого в браузере (за пределами сети инспектора) как 'HttpSendHttpResponse' для HTTP-заголовков,' HttpSendResponseEntityBody' для данных –
Благодарности @AlexK., Я понимаю, что 'HttpSendHttpResponse' также может отправлять данные за один вызов. Я следую примеру MSDN [https://msdn.microsoft.com/en-us/library/windows/desktop/aa364640(v=vs.85).aspx], и там некоторый текст отправляется как ответ в буфера данных с использованием 'HttpSendHttpResponse'. Во всяком случае, я попробую, позвонив «HttpSendResponseEntityBody». –
Я не знал, что это возможно, [MSDN «Замечания»] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364499%28v=vs.85%29.aspx) говорит * «Функция HttpSendHttpResponse используется для создания и отправки заголовка ответа, а функция HttpSendResponseEntityBody может использоваться для отправки данных сущности-тела по мере необходимости». * –