Cache(十四):webservice
%SYS>s ^SYS("Security","CSP","AllowClass","/imedical/web/","%CSP.UI.Portal.About")=1
%SYS>s ^SYS("Security","CSP","AllowClass","/imedical/web/","%SOAP.WebServiceInfo")=1
%SYS>s ^SYS("Security","CSP","AllowClass","/imedical/web/","%SOAP.WebServiceInvoke")=1
根据实际地址更改
练习
- 新建webservice完成后test灰色需要zn
在webservice下新建方法后,调用方法需要new一个对象再进行调用
w ##class(web.MyService).%New().GetSSuserName("0004")
/// web.MyService Class web.MyService Extends %SOAP.WebService [ ProcedureBlock ] { /// WebService 的名称. Parameter SERVICENAME = "MyService"; /// TODO:将此更改为实际 SOAP namespace. /// WebService 的 SOAP Namespace Parameter NAMESPACE = "http://tempuri.org"; /// 引用类的 Namespace 将在 WSDL 中使用. Parameter USECLASSNAMESPACES = 1; /// TODO:添加自变量和实施. /// Test Method Test() As %String [ WebMethod ] { Quit "Test" } // Method Hello() As %String [ WebMethod ] { Quit "Hello" } ///function:获取用户名称 /// input:Code 用户工号 /// output:SSUserName 用户姓名 /// table:SS_User /// w ##class(web.MyService).%New().GetSSUserName("0004") Method GetSSUserName(Code as %String) as %String [WebMethod]{ q:Code="" "Code is Null" s SSUserRowId=$o(^SSU("SSUSR",0,"SSUSR_Initials",Code,0)) q:SSUserRowId="" "" //循环完毕 s SSUserName=$p($g(^SSU("SSUSR",SSUserRowId)),"^",2) q SSUserName } }
- 调用新建的webservice
调用使用ClassMethod
免费的webservice接口http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
生成soap类
/// w ##class(web.MyService).%New().TestWebservice("上海") ClassMethod TestWebservice(byProvinceName as %String) As %Status { s obj=##class(WeatherWebService.WeatherWebServiceSoap).%New() if (obj){ s result=obj.getSupportCity(byProvinceName) b } }
返回list格式结果集 - 在其他cache库上调用自己编写的webservice需要填写服务器用户名与密码
dhwebservice 均为此
生成soap类即可,步骤与2一致