This topic has been archived. It cannot be replied.
-
工作学习 / 专业技术讨论 / 多谢Henryan, Bugfree 轮胎 等诸位的指导。HTTP协议讲的太理论,看得有点晕。还是How To Handle Data from a Post Form 的问题,希望能得到进一步的帮助。
-farmer(农夫);
2005-8-17
{872}
(#2455897@0)
-
是的,刚才用ethereal 试了一下, 第一个包从client 发给server是“POST /cgi/sss"
然后,server send back : "HTTP/1.0 200"because I don't know what to send back to client. And then client send "Continuation or non-http traffic". Looks like client is waiting for "Continuation " command. But what it is?
-farmer(农夫);
2005-8-17
{185}
(#2456050@0)
-
POST 应当直接发送数据:POST /cgi/sss HTTP/1.1
Host: 192.168.1.5
SiteID=123&Frequency=50
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
{68}
(#2456053@0)
-
不是啦。 get是直接发数据
-farmer(农夫);
2005-8-17
(#2456056@0)
-
post 也是。两个回车换行后面跟上。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456058@0)
-
那, 一个数据包且不是很大? 我的buffer 只有54 个字。
-farmer(农夫);
2005-8-17
(#2456065@0)
-
User-Agent 那些都没用,只留下POST 和host, 在不行就只能发多次了。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456068@0)
-
另外你得HTML里面有两个错误:input 应该用name而不使用ID, ID是后来的标准中出现的。Javascript才认得。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456078@0)
-
改成name 了, 还是不行
-farmer(农夫);
2005-8-17
(#2456094@0)
-
再加上一个Content-Length: 应该是可以的,刚才试了一下。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
{530}
(#2456129@0)
-
你也在单片机上试的?
-henryan(Henry);
2005-8-17
(#2456139@0)
-
没有:(,不过协议应该是没有区别的。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456142@0)
-
我觉得是他处理不了大的package
-henryan(Henry);
2005-8-17
(#2456149@0)
-
en, 我刚才写的3个变量就143字节了。不过看看楼主是怎么写程序的吧,当年写大屏幕的时候,发的数据可比这个大多了,一个48x48汉字就快300字节了
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456160@0)
-
需要相应的内存吧。应该跟显存的道理一样
-henryan(Henry);
2005-8-17
(#2456177@0)
-
是的,外接的RAM.也不完全一样,那时候比较早,还是用串口发送的,跟后来用内存映射得没法比。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456184@0)
-
POST应该要带Content-Length,用浏览器发request都会给你加上。
-henryan(Henry);
2005-8-17
(#2456146@0)
-
I agree.
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456152@0)
-
在修改一下POST Header:
POST /cgi/sss HTTP/1.0\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 10\r\n\r\n
s=123&f=50
这样前面的部分可以固化,从contentlength 后面写buffer, input变量全部用单个字母。也不很大。
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
{239}
(#2456181@0)
-
用GET不是更省?
-henryan(Henry);
2005-8-17
(#2456192@0)
-
要看server如何写的了
-canadiantire(轮胎-M.I.N.K.);
2005-8-17
(#2456198@0)
-
再次感谢各位的帮助。目前的解决方法是,1. 扩大buffer size 2.改用get method, 3.chang ID to NAME。这样 server端就可以接收到数据了。 以前的问题主要是buf太小,引起checksum出错,这样ip 解包后以为数据无效
-farmer(农夫);
2005-8-18
(#2457676@0)