


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用Delphi实现手机短讯 很多人一定用过oicq,想必也用过了它的bp机短讯、手机短讯,编程的朋友一定想实现这种功能,如果你的程序能发到手机、发到bp机一定很酷。 现在我就介绍一种可行的方法。 一、原理 它不同于oicq的双方都在网上才能进行交流的寻呼功能,它可以将文字信息发送到真正的寻呼机上。只要你能够上网,就可以自己动手,随时随地将信息发送出去,即使你在国外,也可以利用它来向国内的友人发送信息了,而且不用交纳国际长途费用,是不是方便又省事呢! 二、分析 现在网上各寻呼台都有网上服务,网页寻呼(web paging)就是常用的一种。它是通过在互联网上访问寻呼台的主页,然后由寻呼台的信息寻呼系统打传呼。所以我们只要利用http协议就可以实现网络寻呼了。以下就简单介绍一下http协议: http中完成一个会话通常要完成:1)客户端程序与服务器建立连接2)发送请求3)服务器响应客户端4)关闭连接 http常用到的请求有:1)get(请求一万维网页) 2)head(读取一万维网页的头部) 3)put(请求一存储万维网页) 4)post(附加一个命名的资源) 5)delete(删除万维网页) 6)link(连接两个已有的资源) 7)unlink(断开两个已有资源的连接) http中常用到的应答状态代码有:(*号代表0-9间的一个数) 1. 1* (信息) 2. 2*(成功) 3.4*(客户端错误) 4.5*(服务器错误) 其实我们要实现的程序,只用post、get请求,收到正常应答就可以了。post可以用于把用户输入的数据以数据流的方式传给cgi程序,cgi通过contect-length环境变量来取相应长度的数据流信息。post请求格式如下:post /stu/chatroom/check.asp http/1.0accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*referer: /stu/accept-language: zh-cncontent-type: application/x-www-form-urlencodedproxy-connection: keep-aliveuser-agent: mozilla/4.0 (compatible; msie 5.5; windows 98)host: content-length: 87pragma: no-cachecookie: aspsessionidqgggqhhe=abgnnojcigofcdlbiolhkafk服务器正常应答的头部结构为: 200 ok http/1.0 说明提交数据成功 三、程序的实现 delphi中nmhttp已经可以很容易的实现上面的所说的数据提交,而且它还支持proxy、这样对于通过代理服务器上网一样可以适用,并且它不是oicq中发送讯信所用到socket5代理。 新建一个窗体,加入组件一个combobox,命名为callto,用于存放寻呼对象,如国信寻呼就有95908、94908、94909、98062、98063、98019、98035、98052、98038、99055、98060、98061、98051、98003、99062、99016、99017、99018、99019、99046、99076;加入组件edit,命名为tonumber,表示寻呼号码;加入组件radiogroup,命名为radiogroup1,caption设为呼机类型,items中加入两项,分别为中文机、数字机;加入组件edit,命名为firstname,用于表示发寻呼人的姓;加入组件radiogroup,命名为radiogroup2,caption设为寻呼人性别,items中加入两项,分别为先生、小姐;加入组件memo,命名为callmsg,用于输入发送的信息(注:对于数字机只能是数字信息);加入组件nmhttp,命名为nmhttp1;加入checkbox,命名为ifuseproxy,用于确定是否使用代理服务器;加入两个edit组件,分别用于软件代理服务器地址、代理服务器端口;最后加入命令按钮,caption设为“发送”。现在以国信寻呼为例,它用get请求就可以实现了,“发送”按钮的程序代码如下: procedure tform1.button1click(sender: tobject); var callstr:string;begin callstr:=/cgi-bin/tips/webpaging?stn_id=+callto.text+&page_no=+tonumber.text; case radiogroup1.itemindex of 0:callstr:=callstr+&pager_type=c; 1:callstr:=callstr+&pager_type=n; end; callstr:=callstr+&firstname=+firstname.text; case radiogroup2.itemindex of 0:callstr:=callstr+&title=0; 1:callstr:=callstr+&title=1; end; callstr:=callstr+&msg=+callmsg.text+&answer=null&b1=发送寻呼; nmhttp1.inputfilemode := false; nmhttp1.outputfilemode := false; nmhttp1.reportlevel := status_basic; if ifuseproxy.checked then begin xy := edit1.text; xyport := strtoint(edit2.text); end; nmhttp1.get(callstr);end;有些寻呼(如润迅寻呼就不能用上面的get请求实现,它要用post请求),使用与上面相差不大,如下面是nmhttp的post用法: nmhttp1.inputfilemode:=false; nmhttp1.outputfilemode:=true; nmhttp1.reportlevel:=status_basic; if ifuseproxy.checked then begin xy := edit1.text; xyport := strtoint(edit2.text); end; with nmhttp1.headerinfo do begin cookie := edit5.text; localmailaddress := edit6.text; localprogram := edit7.text; referer := edit8.text; userid := edit9.text; password := edit10.text; end;/ 把要提交的数据先放在test.txt文件中:格式为stnid=a&pageno=123456. nmhttp1.post(/script/zbwebcall.asp,test.txt);/nmhttp的具体用法在delphi安装目前borlanddelphi5demosfastnethttp下有个nmhttp使用的例子。以上都是用nmhttp实现的,其实用delphi中的webbrowser组件同样可以完成数据的提交,使用是这样的 webbrowser1.oleobject.document.frontpage_form1.submit();说明:webbrowser1是webbrowser组件的名,frontpa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论