我正在尝试获取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更多字节。
这是我唯一的选择吗?
提前致谢
答案 0 :(得分:0)
Available
属性不是您认为的。删除它的使用。
此外,您没有使用Read
的返回值。 TCP为您提供字节流。 Read操作可以返回以一个字节开头的任何数量。你的代码必须处理这种情况。
您应该继续阅读,直到远程端完成发送。您可以通过检查读取的字节数与零来找到相关信息。