获取http请求的内容

时间:2014-07-16 12:06:10

标签: c# multithreading sockets .net-2.0

我正在尝试获取http请求的内容...我的程序正在使用线程和套接字来通信到接入终端.. 我

这是终端发送的请求:

POST /iclock/devicecmd?SN=2182682370001 HTTP/1.1,内容是 ID1&Return=0&CMD=INFO ..

这是我的功能,以获得http请求的全部内容:

private string GetPedido(NetworkStream stream)
{
string sPedido = "" ;
Byte[] bytesFromStream = new Byte[GlobalFunctionAndVariables.iStreamBufferSize];
while (_tcpClient.Available>0)
{
  stream.Read(bytesFromStream, 0, bytesFromStream.Length);
  //Console.Write("available: {0}\n", _tcpClient.Available);
  sPedido += System.Text.Encoding.ASCII.GetString(bytesFromStream, 0, bytesFromStream.Length);
}
Console.WriteLine("Terminou, a enviar resultado \n");

}

现在的缓冲区是32个字节。 目前我只获得http标头,而不是内容。

如果我想返回内容,我是否需要逐字节解析字符串..然后找到content-length的值并要求fecth x更多字节。

这是我唯一的选择吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

Available属性不是您认为的。删除它的使用。

此外,您没有使用Read的返回值。 TCP为您提供字节流。 Read操作可以返回以一个字节开头的任何数量。你的代码必须处理这种情况。

您应该继续阅读,直到远程端完成发送。您可以通过检查读取的字节数与零来找到相关信息。