未收到HTTP消息正文

时间:2011-11-09 20:30:11

标签: http sockets client-server

我在我公司的一个客户网站上遇到了一个非常奇怪的问题。 我们的系统尝试将HTTP请求发送到站点中的某个服务器。 服务器在从DMZ内运行的计算机上运行。

客户端是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 :(得分:0)

什么样的Java?什么平台?这之后关闭插座吗?你有没有正确关闭插座? 在许多情况下,您必须将套接字设置为以允许其完成发送缓冲数据的方式关闭(不保证刷新...)