POST的问题??????(50分)

  • 主题发起人 主题发起人 smilboy
  • 开始时间 开始时间
S

smilboy

Unregistered / Unconfirmed
GUEST, unregistred user!
有这样一个ASP程序
可以这样访问:http://***/test.asp?name=smilboy&email=smilboy@263.net
将把NAME、EMAIL添入数据库
我想用DELPHI做个程序
EDIT1。TEXT 用于输入NAME
EDIT2。TEXT 用于输入EMAIL
POST 到 http://***/test.asp
同样达到目的,该怎么做
不用url='http://***/test.asp?name='+edit1.text+'&email='+edit2.text这种方式
要原程序,是不是用NMHTTP控件的POST方法
 
换一个控件吧,比如ics的
nmhttp对post或者get都有点问题, 如果真要用,你上面那个应该用get方法吧
 
如果要求不高的话,用NMHTTP还是比较方便的,我就用过 :)
s:String;

s:='http://***/test.asp?name='+edit1.text+'&email='+edit2.text;
nmhttp.post(s,'');

 
你的问题应该用get方法解决的,这是由ASP程序获得信息的方式决定的,因为按你给出的
信息http://***/test.asp?name=smilboy&email=smilboy@263.net这明显看出ASP程序用get
方法获得变量的值,所以反而用post传递变量不行。
至于是否用nmhttp还是ics则看你的要求了,一般post的信息不多则nmhttp就可以了,如果
你要post一大段文字(例如文章)则最好用ics。
 
可是我有MEMO
GET 不行
 
GET不行就用POST。
 
用get还是post是由对方的asp程序决定的,asp程序中如果说明用get方式得到数据,那么你
post过去是没用的,除非asp程序中没有说明用什么方式得到数据,只是给出变量名,那就
用post或者get都行。
至于你的memo,是不是说你其中一个变量的内容会很长?如果asp程序你改不了那就没办法,
否则asp程序最好用post得到数据。
 
post我是肯定要用的
还有ASP程序是我写的,这个每问题。
我想知道DELPHI这边的POST怎么写
 
我自己在本机上做了一个TEST.HTM 和 PAGE.ASP
由TEST.HTM以POST的方式提交数据给PAGE.ASP
用NMHTTP控件
例:
nmhttp1.Post('http://127.0.0.1/test.asp','bp_num=4567781');
但是提交以后,我用NMHTTP的GET方式测到PAGE.ASP的文件并没有实际接受数据。
这是什么原因??
我究竟该如何使用NMHTTP控件???
我如何测试证明PAGE.ASP接受了数据??


TEST.HTM的源文件
<html>
<body>
<form method="POST" action="page.asp">
<p><input type="text" name="bp_num" size="20"></p>
<p><input type="submit" value="提交" name="B1" ></p>
<p><input type="reset" value="全部重写" name="B2"></p>
</form>
</body>
</html>

PAGE.ASP的源文件
<%@ Language=JavaScript %>
<html><body>
<% var v=Request.form ("bp_num")%>
BPNUM="<%=v%>"
</body></html>

向高手请教,急盼回复!!
谢谢

2001/04/02

 
各位大虾:
小弟已经测试成功
NMHTTP的控件有问题。
如果用POST方法只能使用
s:='http://***/test.asp?name='+edit1.text+'&email='+edit2.text;
nmhttp.post(s,'');
这种模式

不能使用
nmhttp1.Post('http://127.0.0.1/test.asp','bp_num=4567781');
这种模式

但是
ASP文件必须可以接受GET提交的数据。
就可以使用以上模式,当然也可以使用
nmhttp1.get('http://127.0.0.1/test.asp','bp_num=4567781');
的模式。



 
用ICS控件吧!
 
How to use
give me a simple
 
还是用indy控件吧,我认为比ics好用
 
说不到点上
我说要POST MEMO1。TXT 的东西

s:='http://***/test.asp?name='+memo1.text+'&email='+memo2.text;
nmhttp.post(s,'');

这个恐怕不行吧

 
用ICS,里面有例子的,自己啃一啃。
 
嘿嘿,问题的焦点在于你们没想到NMHTTP的post有问题吧?

eprog 关于get 和post的解释很正确。当然,有一些server 可以把get post过来的
数据统一了。比如php的就可以。或者delphi写的一些ISAPI DLL也可能做了这样的处理。

关于nmhttp,我也曾经试验过,最后在服务器端发现,NMHTTP自做主张把我post数据用URL方式给编码了!
实在是可恨。比如:你要向http:/test/cgi-bin/login.cgi post一个USERID PASSWORD
如果你用NMHTTP,那你肯定会想postdata用这样的方式:USERID=user&PASSWORD=pass
但你在server 端看看client传来的东西就知道了。nmhttp这东西把=,&都给你用%3A什么
的编码了!服务器端(无论是cgi,php,asp)都是依靠= &来解析变量名和值的。
所以服务器根本就解析不了post过来的变量和值。
所以,奉劝诸位,如果要post data to server ,千万不要用nmhttp.否则真是不知道
在哪错的。推荐用ICS或者 delphi6/kylix 使用的INDY.都是Free source code.
但是INDY是阻塞方式工作的。
 
接受答案了.
 
后退
顶部