情况是这样的,医院的收费系统是pb9.0+mssql2000搞的,现在医院做了一个在线预约就诊的网站,采用的是php+mssql2000,服务器是自己的,ip地址是固定的,数据库名、网址什么的都知道。现在医院不允许pb直接连接到php网站的数据库,因为有多家医院使用同一个网站,每个医院只能下载自己家的数据。请问下大侠们怎么下载php网站采集到的数据,并且在下载后将php网站的对应数据下载标志字段更新为“已下载”。感谢!
----------------------------------------------
另外,很久没来了,看到还有这么多人在坚持搞pb开发很欣慰,大家辛苦了!
------解决方案--------------------
不知道是否要做成下载实时数据还是做成隔日(或者隔一段时间)数据下载?我的建议是php可以将数据生成xml文件,文件名规范好,pb可以通过inet控件去登录规范好的url获取。另外一种就是php生成text文件,然后pb通过ftp去获取然后倒入,不过这个比较麻烦。
------解决方案--------------------
做个webservice,让pb调用不就完了。
------解决方案--------------------
php怎么做webservice?没做过,给点思路。多谢。
------解决方案--------------------
需要php网站做的http的接口,在pb中直接调用这个http接口即可
参考以下代码
PostURL()
功能执行HTTP Post,这样PowerBuilder应用程序就可以通过CGI、NSAPI、ISAPI接口发送请求。
语法servicereference.PostURL ( urlname, urldata, headers, data )
参数
servicereference:Inet对象实例或引用
urlname:String类型,指定要发送请求的URL(统一资源定位器)
urldata:Blob类型,指定发送给urlname参数指定的URL的参数
headers:String类型,指定HTML首部。对Netscape浏览器来说,每个HTTP首部之后需要个换行符(~n),在所有首部之后再跟一个换行符(~n)
data:InternetResult实例变量,用于保存返回的HTML
返回值
Integer。函数执行成功时返回1,发生错误时返回下述值:
-1一般错误
-2指定的URL无效
-4不能连接到Internet上
-6Internet请求无效
用法
该函数的data参数要求是继承了InternetResult对象的类用户对象实例,在该用户对象的定义中,需要定义覆盖函数InternetData(),用于处理Internet返回的HTML数据。由于Internet以异步方式传送数据,因此,data参数必须是某个实例变量或全局变量的引用(例如窗口级实例变量)。
示例 下面的代码调用PostURL()。其中,Iinet_base是个Inet类型的实例变量;n_ir_msgbox是继承了InternetResult对象的类用户对象,iir_msgbox是该用户对象的一个实例:
Blob lblb_args
String ls_headers
String ls_url
Long ll_length
ir_msgbox = CREATE n_ir_msgbox
ls_url = "http://coltrane.sybase.com/ "
ls_url += "cgi-bin/pbcgi60.exe/ "
ls_url += "myapp/n_cst_html/f_test? "
lblb_args = blob( " ")
ll_length = Len(lblb_args)
ls_headers = "Content-Length: " + String(ll_length) + "~n~n "
iinet_base.PostURL(ls_url, lblb_args, ls_headers, iir_msgbox)