!急! 请教POST数据的格式(200分)

  • 主题发起人 mingming_wang
  • 开始时间
M

mingming_wang

Unregistered / Unconfirmed
GUEST, unregistred user!
用TNMHTTP控件的POST方法发送数据时
应该是怎样的格式
才能使request.contentfields识别?
 
<from mothed="post" action="相关路径.exe(或.asp)">
<input type="text" .......
.
.
.
<input type="submit" name="name" value="提交">
</form>
 
就是name=value&name2=value2吧?
不过我用delphi 5不行,
delphi 4下可以
 
Delphi5的TNMHTTP控件是有点问韪,但你可以将参数设为如下:
TNMHTTP.Post(URL+'?name=value&name2=value2','');
注意的是要将第二个参数设为空。
以上方法已经在我开发的程序中使用。
binglin@163.net
 
如果用TNMHTTP.Post(URL+'?name=value&name2=value2','');
实际服务器上是要用get方法来取了。
 
可以做到象在IE中填数据,然后,post的效果吗?关注!
 
用GET是可以实现,但是他的参数个数好象有限制吧
偶GET一个带23个参数的URL,服务端却只接受到14个参数,
请问是咋回事呢?
 
想大富翁论坛这里,我贴一编几十K的文章,再按“发出”。
可以用TNMHTTP控件的Post来模拟提交吗???
 
用GET方法的URL参数长度不能超过255个字节;
用POST方法传送的数据量大些,几十K的文章应该没问题的。
可是我如下用:(我用的是CBC5)
url="http://192.168.1.5/updown/card.php3";
s="userid=" + userid + "&name=" + name + "&company=" + company + "&caption=" + caption + "&compadd=" + compadd +
"&compphone=" + compphone + "&fax=" + fax + "&compweb=" + compweb + "&homeadd=" + homeadd +
"&homephone=" + homephone + "&handphone=" + handphone + "&personweb=" + personweb +
"&email=" + email + "&call=" + call + "&icq=" + icq + "&nickname=" + nickname + "&sex=" + sex +
"&birthday=" + birthday + "&memday=" + memday + "&favorite=" + favorite + "&specialty=" + specialty +
"&remark=" + remark;
NMHTTP1->Post(url,s);
结果PHP3并没有接受到这些参数的内容,请问问题出在哪里?
 
你要

s="userid=" + HTTPEncode(userid) + "&name=" + HTTPEncode(name)
+ "&company=" + HTTPEncode(company) + ......

用HTTPEncode把某些字符转换(比如空格等等)
 
上面的说法是错误的,下面的才是正确的:

我一贯说nm的控件糟糕,这又是一例,
本来Post(...,'user=abc&password=def')
我发送出去的content中的内容就必须是user=abc&password=def
可是nmhttp自作聪明URLEncode了一把,把发送的内容变成了
user%3Dabc%26password%3Ddef
(就是说,把等号(=) encode 为 %3d ,画蛇添足)

我只好又推荐ics控件了:
http://www.rtfm.be/fpiette/indexuk.htm 免费软件、带源码。
post写起来麻烦一点,不过是有用的:

TMemoryStream* sendstr=new TMemoryStream();
TMemoryStream* rcvdstr=new TMemoryStream();
char buf[]="user=abc&password=xyz";
sendstr->Write(buf,sizeof(buf)-1);//减一是不要最后的/0字符
sendstr->Position=0;
h->RcvdStream=rcvdstr;
h->SendStream=sendstr;
h->URL="http://127.0.0.1/test.asp";
h->Post();
ShowMessage(AnsiString((char*)rcvdstr->Memory,rcvdstr->Size));

 
我劝大家该用ICS的控件,否则,一定会后悔。
TNMHTTP实在太垃圾了。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部