我正在使用python和套接字库来查看我正在发送的内容。
我知道每一行必须以CRLF结尾。我也知道必须在标题中发送正文的长度(使用Content-Length)。
我不知道的是,如果我必须将我的身体发送成一个以CRLF结尾的字符串,或者像几个字符串一样,每个字符串都以CRLF结尾。而且,在最后一种情况下,我是否必须在我身体的长度中加入CRLF?
答案 0 :(得分:1)
正文的长度应包括所有字符,包括CR和LF。
如果您要发送XML,我不同意每行必须以CRLF结尾。发送漂亮的打印XML是不必要的。 (对于人类而言;只有机器参与此交易。)我将删除所有这些并将其作为一个长字符串发送。
如果您使用HTTP作为协议,则对其进行正确编码非常重要。
我想知道为什么你要使用原始套接字而不是HTTP。 XML over HTTP是很好理解的。
答案 1 :(得分:0)
您的XML不应该有任何CRLF。
xmlData = "<?xml version=\"1.0\"?> <d:propfind xmlns:d=\"DAV:\" xmlns:cs=\"http://calendarserver.org/ns/\"> <d:prop> <d:displayname /> <d:getetag /> </d:prop> </d:propfind>";
无需对其进行编码。只需包含&#34; Content-Length:&#34;和&#34;内容类型:&#34;在标题中。您必须使用CRLF将标题与正文分开。但是,在Content-Length:中,您不必考虑CRLF(除非您发送它们)。