Тело HTTP-сообщения не получено - PullRequest
0 голосов
/ 10 ноября 2011

Я столкнулся с действительно странной проблемой на одном из сайтов клиентов моей компании. Наша система пытается отправить HTTP-запросы на один из наших серверов на сайте. Сервер работает на машине, которая работает в демилитаризованной зоне.

Клиент находится на Java, а сервер - на C #. Мой код отправляет HTTP-запрос следующим образом:

[Правка - изменен с псевдо-фактического кода]:

Socket s = new Socket();
socket.connect([server address], timeout);

SocketOutputBuffer output = new SocketOutputBuffer (socket);

byte[] buffer = [creating the HTTP request headers]
output.write(buffer);
output.flush();

buffer = [creating the message body]
output.write(buffer);
output.flush();

При отладке клиентского приложения последний «output.flush ()» завершается успешно. На стороне сервера я вижу, что на стороне сервера были получены только заголовки HTTP.

Странно то, что если я закрою сокет после последней очистки, то тело сообщения поступит на сервер.

Есть мысли?

Большое спасибо.

1 Ответ

0 голосов
/ 10 ноября 2011

Что за Java? Какая платформа? Вы закрываете розетку после этого? Вы правильно выключили розетку? Во многих случаях вы должны отключить сокет таким образом, чтобы он мог завершить отправку буферизованных данных (очистка не гарантируется ...)

...