Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与HTTP服务器通信_C#_Http_Sockets - Fatal编程技术网

C# 与HTTP服务器通信

C# 与HTTP服务器通信,c#,http,sockets,C#,Http,Sockets,我目前正在尝试编写自己的HttpWebRequest类。我已经编写了将请求头和请求体发送到服务器并等待响应的代码。但是,我不确定应该使用哪个字符集作为标题 我也一直在想什么是处理响应的好方法(header+body)。我应该尝试将所有接收到的数据解码成一个字符串,还是应该采取不同的做法?我正在考虑使用两条分隔这两个部分的换料/回车线将收割台与车身分开。然后,我就能够解码标题,并将正文留给以后,当我知道它的字符集时 简言之,我的问题是: HTTP的头使用什么字符集? 处理响应的好方法是什么?首先,

我目前正在尝试编写自己的HttpWebRequest类。我已经编写了将请求头和请求体发送到服务器并等待响应的代码。但是,我不确定应该使用哪个字符集作为标题

我也一直在想什么是处理响应的好方法(header+body)。我应该尝试将所有接收到的数据解码成一个字符串,还是应该采取不同的做法?我正在考虑使用两条分隔这两个部分的换料/回车线将收割台与车身分开。然后,我就能够解码标题,并将正文留给以后,当我知道它的字符集时

简言之,我的问题是:

HTTP的头使用什么字符集?
处理响应的好方法是什么?

首先,我建议您熟悉HTTP 1.1协议的RFC

从上述RFC中,您将发现以下语句

文本规则仅用于描述性字段内容和值
消息解析器不打算解释的。单词
of*文本可能包含ISO以外的字符集中的字符-
8859-1[22]仅当根据RFC 2047的规则进行编码时
[14]

标头应使用ISO-8859-1编码,除非使用RFC-2047中概述的MIME编码


至于响应的解析,这实际上取决于消息。就个人而言,我将基于为HTTP定义的BNF处理响应,因为我识别出我识别的令牌,我将更新解析器的状态以相应地处理其余的响应。例如,在处理响应数据时,您可能会发现响应是JPG图像,内容长度是X,因此您可以设置适当的内存流来读取内容,然后创建图像等。首先,我建议您熟悉HTTP 1.1协议的RFC

从上述RFC中,您将发现以下语句

文本规则仅用于描述性字段内容和值
消息解析器不打算解释的。单词
of*文本可能包含ISO以外的字符集中的字符-
8859-1[22]仅当根据RFC 2047的规则进行编码时
[14]

标头应使用ISO-8859-1编码,除非使用RFC-2047中概述的MIME编码


至于响应的解析,这实际上取决于消息。就个人而言,我将基于为HTTP定义的BNF处理响应,因为我识别出我识别的令牌,我将更新解析器的状态以相应地处理其余的响应。例如,在处理响应数据时,您可能会发现响应是JPG图像,内容长度是X,因此您可以设置适当的内存流以将内容读入,然后创建图像等。

更多详细信息,请输入您拥有的内容。请记住HTTP!=HTML。不要试图将主体解析为字符串——如果返回一个具有分块编码的300MB视频文件,该怎么办?我的建议是将响应缓冲到内存中(作为原始字节),并将其公开给您的客户机。是的。尽管我确实需要将标题解析为字符串。但是报头使用什么编码呢?代码正在编写中,不过我正在尝试对其进行一些修改。我已经做了更多的研究。事实证明,不需要编写HTTP类。我想这么做的主要原因是HttpWebRequest的明显缓慢。虽然我已经发现将其代理设置为null可以解决这个问题。更多详细信息,请您将您拥有的放在这里好吗?请记住HTTP!=HTML。不要试图将主体解析为字符串——如果返回一个具有分块编码的300MB视频文件,该怎么办?我的建议是将响应缓冲到内存中(作为原始字节),并将其公开给您的客户机。是的。尽管我确实需要将标题解析为字符串。但是报头使用什么编码呢?代码正在编写中,不过我正在尝试对其进行一些修改。我已经做了更多的研究。事实证明,不需要编写HTTP类。我想这么做的主要原因是HttpWebRequest的明显缓慢。虽然我发现将其代理设置为null可以解决这个问题。