终于发现HttpSendRequest卡死的原因了
搞了一两天,别人告诉我设置超时时间,但是最后我加了一个\R\N就不卡死了
就是说给服务端发送的数据,不是有包头和要提交的数据吗。
sprintf(PostData,"%s%s%s%s%s\r\n",
“”
);
这是我的格式化提交数据的代码,我加上\R\N,就不会卡死,服务器返回200,
我想问问这是为什么. 而且最重要的是 ,我又陆续向服务器发了几个包,然后有一个包又出现卡死,但是这次加回车也不灵了。。。
自己的想法:我认为卡死,应该和包内容错误和正确没有关系把,感觉是格式错误 ,服务器接收不了
还有就是问问WinInet编程中,连接超时是什么意思。 设置的超时时间,后面的代码就不跑了吗
[解决办法]
不会是尾部加"\r\n"的问题,而是你的PostData的真实长度计算错误,多算了,服务器要等待接收你指定的附加数据长度(Content-Length),直到服务器超时,少一个字节也不灵:)
如果是Get方式,没有附加数据
http请求头必须为一个空行("\r\n\r\n"),如果服务器在接收头数居时,没有收到空行,也被认为头没有结束
你的请求中的“头”和附加数据(Post Data),在服务器开来,就是用一个空行定界的,且空行的4个字节属于头!