热情软件屋

 

编程实现填写、发送一个表单并识别是否成功


编号:QA000473
建立日期: 1999年2月2日 最后修改日期:1999年2月8日
所属类别:

zhoujun:
    vb5
    win98
    我想用vb编程实现填写、发送一个表单并识别是否成功,但inet控件的帮助比较简单,麻烦详细地给点指导,能否亲手写一段比如发送您这个留言板的程序代码。

回答:

    发送一个表单首先要确定使用GET还是POST方法。这一点是由服务器决定的,你可以用浏览器先打开填写表单的页面,看看它的源程序,找到<FORM></FORM>部分。如下面是AltaVista搜索引擎添加站点的页面:
    


    <P><FORM method=GET action="http://add-url.altavista.digital.com/cgi-bin/newurl">
    <P>
    <CENTER></font>
    <INPUT TYPE=hidden NAME=ad VALUE="1">
    <INPUT name=q size=34 maxlength=1000 value="http://">
    <INPUT TYPE=submit VALUE="Submit URL"><br>
    </center></FORM>
    

    这里的method=GET方法表明,这个页面采用的是GET方法。URL是http://add-url.altavista.digital.com/cgi-bin/newurl,需要传送的数据是ad和p。GET方法的特点是将数据加在URL后面,如:
    http://add-url.altavista.digital.com/cgi-bin/newurl?ad=1&q=http%3A%2F%2Faskpro.yeah.net
    在VB中直接使用
    objInet.Protocol = icHTTP
    objInet.Execute "http://add-url.altavista.digital.com/cgi-bin/newurl?ad=1&q=http%3A%2F%2Faskpro.yeah.net", "GET"
    就可以了。
    你可能注意到了%3A%2F%2F这些字符串,这叫URL Encode,它的转换方法很简单,就是%加上要传送的字符的ASCII码(16进制),如“:”号的ASCII码为3A,所以它编码后就成了%3A。一般特殊的符号(如:+、/、?等)和汉字需要进行编码。
    我们站点的提问是填写的表单是POST方式的(我之所以不拿它举例是因为这个表单传送的数据量较大)。它同GET方式的主要区别是数据不是直接加在URL后面。而是放在Execute方法的postdata参数中。其它基本相同。不过,早期的VB 5.0的INet控件有问题,不能实现POST方法,你需要升级到SP2以上的版本或者参考QA000102 "如何实现POST方法"以获得解决方法。
    至于如何识别是否成功,一般你要注意StateChanged事件,根据这个事件的变化及时显示状态。如果在这个事件State为icError,说明有错误。如果State为icResponseCompleted,则说明传输成功,不过这不对于成功,有时还可能出现比如URL没找到之类的错误,你还需要根据返回的资料进行判断。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio