C# 获取http请求的内容
我正在尝试获取http请求的内容…我的程序正在使用线程和套接字与访问终端通信。。 我知道 这是从终端发送的请求:C# 获取http请求的内容,c#,multithreading,sockets,.net-2.0,C#,Multithreading,Sockets,.net 2.0,我正在尝试获取http请求的内容…我的程序正在使用线程和套接字与访问终端通信。。 我知道 这是从终端发送的请求: POST/iclock/devicecmd?SN=218268237001 HTTP/1.1,内容为 ID1&Return=0&CMD=INFO 这是我获取http请求完整内容的函数: private string GetPedido(NetworkStream stream) { string sPedido = "" ; Byte[] bytesFromStream = new
POST/iclock/devicecmd?SN=218268237001 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头,而不获取内容
如果我想返回内容,我是否需要逐字节解析字符串..然后找到内容长度的值并要求再发送x个字节
这是我唯一的选择吗
提前感谢可用的
属性与您认为的不一样。删除它的使用
此外,您没有使用Read
的返回值。TCP为您提供了字节流。读取操作可以返回以一个字节开始的任何数量。您的代码必须处理这种情况
您可能应该继续阅读,直到远程端完成发送。您可以通过对照零检查读取的字节数来了解这一点。您的想法是:while(size=stream.read(bytesFromStream,0,bytesFromStream.Length)>0);差不多,是的。这是做这件事的标准方法。但我仍然需要检查我是否已经收到消息,如果condicao是真的,他们终端会关闭插座…condicao是什么意思?您需要解析响应以提取内容。为什么不直接使用HTTP库?我是葡萄牙语的。当我用英语写作时,有时我用葡萄牙语写单词,我的坏…我的意思是条件。只是好奇为什么,如果你在处理HTTP请求,你没有使用。你试过使用StreamReader
?在这里看一看:在streamreader.readtoend()之后,更改为streamreader,我将线程spleep.仍然不工作,因为当从streamreader.readtoend()传递到thread.sleep时,客户端关闭了套接字。