【发布时间】:2014-07-16 12:06:09
【问题描述】:
我正在尝试获取 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 更多字节。
这是我唯一的选择吗?
提前致谢
【问题讨论】:
-
只是好奇为什么,如果你正在处理 HTTP 请求,你没有使用HttpListener。
-
您是否尝试过使用
StreamReader?看看这里:stackoverflow.com/questions/7535901/… -
更改为流阅读器,在streamreader.readtoend()之后,我把线程spleep.still not working,因为从streamreader.readtoend()传递到thread.sleep时,客户端关闭插座。
标签: c# multithreading sockets .net-2.0