pb-http,webservice,db,api

inet非可视对象是PB中提供的专门用来和Internet交互的对象,使用该对象可以编写Internet处理程序。该对象使用时,需要首先创建一个继承自InternetResult对象的用户自定义对象,在该自定义对象上编写脚本对从Internet上返回的结果进行处理。下面我们给出一个实例,该实例从企业黄页之类的网站中获取各个企业的信息,保存到本地计算机中。这样的软件对于从事电话推销的公司是非常需要的。 
按照以下步骤开发该软件: 
1、创建一个Standard Class,选择InternetResult对象,然后在该对象缺省函数InternetData中编写如下脚本(我们希望将获取到的内容保存到文件中,文件的格式是HTML的): 
String ls_filename 
string ls_content 
integer li_FileNum 
integer li_pos1,li_pos2 

ls_content = string(data) 
li_pos1 = Pos(ls_content,'

') 
li_pos2 = Pos(ls_content,'联系人') 
li_pos2 = pos(ls_content,'
',li_pos2) + len('') - 1 
ls_content = Mid(ls_content,li_pos1,li_pos2 - li_pos1) 
if Pos(ls_content,'010') > 0 then 
ls_filename = String(now(),'hhmmss') + right('00000' + string(rand(100)),3) + '.htm' 
li_FileNum = FileOpen("d:/data/" + ls_filename, & 
StreamMode!, Write!, Shared!, Replace!) 
FileWrite(li_FileNum, ls_content) 
FileClose(li_FileNum) 
end if 

Return 1 
保存该用户对象,命名为n_ir_msgbox。 
2、创建一个窗口,提供用户操作界面。非常简单的一个窗口,命名为w_main,在该窗口中定义一个窗口实例变量: 
n_ir_msgbox iir_msgbox 

在该窗口上放置一个命令按钮,在命令按钮的Clicked事件中编写如下教本: 
inet linet_base 
String ls_url 
long ll_index 

SetPointer(HourGlass!) 
ls_url = 'http://www.6608.net/qy-ml/view_epinfo_vip.php?id=' 
iir_msgbox = CREATE n_ir_msgbox 

if GetContextService("Internet", linet_base) = 1 THEN 
For ll_index = 21272 to 1 step -1 
This.Text = String(ll_index) 
linet_base.GetURL(ls_url + String(ll_index), iir_msgbox) 
next 
END IF 

DESTROY iir_msgbox 


相信上面的程序,如果你能够真正理解,可以改造或者编写成非常使用的网络信息处理程序。


======================================================================================

一般短信接口有http,webservice,db,api等几种格式,他用的是http。

感觉很简单,他说用ole容器,插入对象,调用,可惜,在PB9下,总是非法退出,闹的想装个PB11看看。

至少5年没用过PB了。还真得想想。

http的接口只要在浏览器中输入对应的url,就已经调用成功,那就是执行一次对应url的过程,也没必要非用ole。况且,ole这东西在pb下很不稳定。

如果按我所想,无论什么方式,只要有一次url的访问就可以。考虑下用pb的internetresult 这个内置对象,并测试如下:

建个对象n_ir_msgbox,继承自internetresult,直接在internetdata函数中返回1(这一步很关键,必须有个返回值)

建立窗口,定义实例变量n_ir_msgbox iir_msgbox

增加按钮,click事件中:

inet linet_base 
String ls_url
integer li_rc

iir_msgbox = CREATE n_ir_msgbox

if GetContextService("Internet", linet_base) = 1 THEN

 ls_url = "http://ip:port/sms/http/SendSms?Account=004&Password=33c678db81ecd3daed05bb4520a59f13&Content=这是个测试的短信&Phone=13012345678"
 
 li_rc = linet_base.GetURL(ls_url, iir_msgbox)
   
END IF

DESTROY iir_msgbox


=========================

String ls_User,ls_PS,ls_Str,ls_headers 

String ls_URL,ls_Arg,ls_Ret
Blob lblb_args
Int li_rc,li_Ret
Long ll_Length
inet iinet 

string as_cmd = ""
string as_parm = ""
string as_err

ls_URL='http://192.168.10.87/BWLICPHP/Api.php'  

ls_URL='http://58.216.209.106/BWLICPHP/Api.php'
ls_Arg='Cmd='+as_Cmd+'&Parm='+as_Parm

li_rc = GetContextService( "Internet", iinet ) 
if li_rc<>1 then  
as_Err='创建Internet服务失败'
Goto Err
End IF
  
iinet = create inet   
lblb_args=Blob(ls_Arg)
ll_length = Len(lblb_args) 
ls_headers = "Content-Type: " + "application/x-www-form-urlencoded~n" + "Content-Length: " + String( ll_length ) + "~n~n" 

li_rc = iinet.PostURL(ls_url,lblb_args,ls_headers, 5559, iir_msgbox) 

IF li_rc <> 1 THEN 
as_Err='网络请求错误'
Goto Err
End IF


ls_Ret =String(iir_msgbox.lb_data)
mle_1.text = ls_ret
Messagebox(String(li_RC),ls_Ret)
//li_Ret=Integer(UF_Core_DataColumn(ls_Ret,ls_Ret))
as_Err=ls_Ret


Return li_Ret
Err:
Return 1

你可能感兴趣的:(pb,编程)