| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 615 人关注过本帖
标题:建立中间层服务器
只看楼主 加入收藏
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:759
专家分:2536
注 册:2013-1-30
收藏
得分:0 
*中间层服务 WebService,编译DLL发布到IIS
DEFINE CLASS mywebbaseclass as Session
    DataSession=2
    databasename='mydatabase'
    PROCEDURE Init()
        SET ESCAPE OFF
        set carr off
        set mark to /
        set century on
        set date ymd
        set hours to 24
        set delete on
        set talk off
        set exact on
        set status bar off
        set safety off
        set conf on
        SET SYSMENU OFF
    ENDPROC

    PROCEDURE Destroy
    ENDPROC

    FUNCTION ConnectSQLServer() as Integer
        LOCAL iConn as Integer
        LOCAL connect_tmp as String
        LOCAL cText as String
        =SQLSETPROP(0,"DispLogin" ,3)
        connect_tmp="Driver={SQL Server};Server=192.168.1.200;Address=192.168.1.200,1433;Network=dbmssocn;Uid=sa;Pwd=密码;" &&连接数据库服务器,假设数据库服务器IP 192.168.1.200
        iConn=SQLSTRINGCONNECT(connect_tmp)
        IF iConn=-1
            cText='连接数据库失败'+chr(13)+chr(10)
            strtofile(cText,'error.txt',.t.)
        ELSE
            = SQLSETPROP(iConn, 'Transactions', 2)
            =SQLSETPROP(iConn, 'DisconnectRollback',.t.)
            = SQLEXEC(iConn,"USE "+THIS.databasename)
        ENDIF
        RETURN iConn
    ENDFUNC

    PROCEDURE DisConnectSQLServer(iConn as Integer)
        SQLDISCONNECT(iConn)
    ENDPROC

    PROCEDURE Error(nError as Integer,cMethod as String, nLine as Integer)
        CLOSE DATABASES
        =SQLDISCONNECT(0)
        =SYS(1104)
        LOCAL cText as String
        cText=;
        '出错时间:'+transform(datetime())+chr(13)+chr(10)+;
        '错误代码:'+str(nError,4)+chr(13)+chr(10)+;
        '错误提示:'+message()+chr(13)+chr(10)+;
        '错误方法:'+cMethod+chr(13)+chr(10)+;
        '错误行号:'+transform(nLine)+chr(13)+chr(10)
        strtofile(cText,'error.txt',.t.)
        comreturnerror("Fox Web Service",cText)
        CLEAR ALL
    ENDPROC
ENDDEFINE

DEFINE CLASS mywebservice as mywebbaseclass olepublic
    FUNCTION EXECUTE_SQL (SQL_STR as string) as string  &&执行客户端的SQL
        IF EMPTY(SQL_STR)
            RETURN ''
        ENDIF
        LOCAL cXML as String
        LOCAL SQL_ERR AS Integer
        LOCAL SQL_iConn AS Integer
        LOCAL OUT_filename as String
        cXML=''
        SQL_iConn=THIS.ConnectSQLServer()
        IF SQL_iConn<>-1
            SQL_ERR=SQLEXEC(SQL_iConn,SQL_STR,'cursor_TMP')
            IF SQL_ERR<>-1 AND USED('cursor_TMP')
                CURSORTOXML('cursor_TMP','cXML')
                cXML=STRCONV(cXML,13)
            ENDIF
            IF USED('cursor_TMP')
                USE IN cursor_TMP
            ENDIF
        ENDIF
        =this.DisConnectSQLServer(SQL_iConn)
        RETURN cXML  &&返回查询结果
    ENDFUNC
ENDDEFINE

**************************************************************


*客户端
*关联中间层
loWS = NEWOBJECT("WSHandler","_ws3client.vcx")
oweb =loWS.SetupClient("http://192.168.1.244:8080/myseb/mywebservice.WSDL", "", "")  &&假设中间层服务器IP: 192.168.1.244 IIS端口:8080

*执行SQL
xml_tmp=oweb.EXECUTE_SQL("select * from 表 where 查询条件") &&调用中间层的 EXECUTE_SQL() 执行SQL
xml_tmp=STRCONV(xml_tmp,14)
XMLTOCURSOR(xml_tmp,'cursor_TMP')
SELECT cursor_TMP
BROWSE


收到的鲜花
  • kangss2025-04-30 11:27 送鲜花  1朵  
2025-04-30 10:17
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2045
专家分:4180
注 册:2012-2-29
收藏
得分:0 
回复 11楼 kiff
试一试,谢谢!
2025-04-30 12:07
easyppt
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:361
专家分:877
注 册:2021-11-24
收藏
得分:0 
回复 11楼 kiff

客户端对象: oweb 创建的类 代码能分享吗,另外服务器端IIS 发布的DLL 是怎么调用的 ,是 myseb/mywebservice.WSDL 这个文件吗,这个文件的代码是怎样的  

2025-04-30 14:39
kangss
Rank: 8Rank: 8
等 级:贵宾
威 望:14
帖 子:333
专家分:780
注 册:2014-6-12
收藏
得分:0 
以下是引用easyppt在2025-4-30 14:39:10的发言:

回复 11楼 kiff

客户端对象: oweb 创建的类 代码能分享吗,另外服务器端IIS 发布的DLL 是怎么调用的 ,是 myseb/mywebservice.WSDL 这个文件吗,这个文件的代码是怎样的  


_ws3client.vcx 在“C:\Program Files (x86)\Microsoft Visual FoxPro 9\Ffc”
是VFP9自带的

2025-04-30 15:49
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:430
专家分:1371
注 册:2015-10-2
收藏
得分:0 
kiff版主出现啦!
2025-04-30 20:27
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:759
专家分:2536
注 册:2013-1-30
收藏
得分:0 
以下是引用easyppt在2025-4-30 14:39:10的发言:

回复 11楼 kiff

客户端对象: oweb 创建的类 代码能分享吗,另外服务器端IIS 发布的DLL 是怎么调用的 ,是 myseb/mywebservice.WSDL 这个文件吗,这个文件的代码是怎样的  

*客户端
*关联中间层
loWS = NEWOBJECT("WSHandler","_ws3client.vcx")
oweb =loWS.SetupClient("http://192.168.1.244:8080/myseb/mywebservice.WSDL", "", "")  &&假设中间层服务器IP: 192.168.1.244 IIS端口:8080

*执行SQL
xml_tmp=oweb.EXECUTE_SQL("select * from 表 where 查询条件") &&调用中间层的 EXECUTE_SQL() 执行SQL
xml_tmp=STRCONV(xml_tmp,14)
XMLTOCURSOR(xml_tmp,'cursor_TMP')
SELECT cursor_TMP
BROWSE
**************************
这就是客户端代码,_ws3client.vcx是VFP9.0自带的类,服务器端IIS 发布的DLL,在IIS服务器端上安装VFP9.0 ,vfp工具菜单TOOLS->向导Wizards->web services 发布dll,并生成 .WSDL文件,客户端就是关联这.WSDL文件。
客户端和服务器都要安装soapsdk.msi,客户端要加入类"_ws3client.vcx。注意:服务器端发布dll时的服务器端IP地址要与客户端设用的IP相同 (如:oweb =loWS.SetupClient("http://192.168.1.244:8080/myseb/mywebservice.WSDL", "", "")
soapsdk.rar (3.52 MB)


2025-05-07 11:38
hsfisher
Rank: 2
等 级:论坛游民
帖 子:23
专家分:19
注 册:2009-4-26
收藏
得分:0 
学习
5 天前 00:00
快速回复:建立中间层服务器
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029520 second(s), 12 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved