上面的说法是错误的,下面的才是正确的:
我一贯说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));