PB12.5创建WebService及调用

早前曾经用PB12.5创建过WebService,并也用PB12.5创建了客户端,调用之,在之前的博客中也有简要要点记录:https://mp.csdn.net/mp_blog/creation/editor/51223325。由于项目需要,需要为同事做个Demo,现在捡起来,又有些陌生啦,现在把过程记录下,供自己或有元人分享。

工具PB12.5

操作系统:Win10

目录

一、创建服务端WebService及源码发布

二、IIS错误排查

HTTP 错误 403.14 - Forbidden

HTTP 错误 404.17 - Not Found

三、安装包发布WebService

四、创建客户端程序调用这个WebService


一、创建服务端WebService及源码发布

  • 创建WebService服务端。用向导即可,工作区、New、Target、.Net Web Service,一步一步即可

成品如下图所示:

  •  然后就可以在对象n_webservicedemo中,增加自定义函数,发挥吧!我先弄个加法哈

 这个方法就会在发布对象的Objects中列出来,把需要的勾上,发布即可

  • 等等!往哪发布呢?正常应该是Deploy页签的Deploy directly to IIS,端口不 填的话,默认是80。前提是IIS服务得起来

  •  IIS如下,可以新建一个站点,把端口设置成其它,比如我设置为8101,以不和默认的冲突,这样的话,在PB端设置时,可以把IIS Server asddress设置为localhost:8101

 这时可以尝试直接发布啦

  • 验证

 如果出现如下内容,说明啥,成功了呗!

  •  但是,这里IIS的设置,可能出现如下错误而打不开

二、IIS错误排查

HTTP 错误 403.14 - Forbidden

HTTP 错误 404.17 - Not Found

这个就是另一个范畴的事儿啦,处理IIS吧,通常是没有安装ASP.Net,或者版本对应没有安装,将ASP.Net 4.8(我机器上是这个)安装上,重起IIS,一般这个问题就没有了,其它的话,再见再议

 再重新验证一下吧

三、安装包发布WebService

1、同样需要提前在IIS上建好站点(绑定好端口8101、记住物理路径D:\SDC

2、安装先择的目录要和选择的IIS对应端口的服务,所在的物理路径一致

 3、接着按向导操作即可

四、创建客户端程序调用这个WebService

说一下重点吧

  1. 这种方式需要在PB和客户创建代理服务,将目标服务相关对象代理到客户商,是调用WebService的一种方式之一。其弊端是不能传Context-Type,导至如果WebService服务被发布在统一网关,而网关需要鉴权时,无法实现。如果需要解决这个问题,我是通过XMLHttp请求WebService的(准备再写一章....),各有利弊吧
  2. 引入相应版本的pbsoapclient125.pbd
  3. 先新建或个修改代理,以生成服务端的代理出来的对象
  4.  贴下代码
  5. SoapConnection conn // Define SoapConnection

    n_wbs01soap proxy_obj // Declare proxy

    long rVal, lLog

    int liRet
    String str_endpoint,s1,s2,str_webServicename
    blob lbData[]

    str_endpoint = sle_1.Text                //"http://localhost:8100/WebService1.asmx?WSDL"
    str_webServicename = sle_2.Text        //n_wbs01soap

    conn = create SoapConnection  //Instantiated connection

    rVal = Conn.CreateInstance(proxy_obj,str_webServicename, str_endpoint)

    IF rVal <> 0 Then
        messagebox ("提示", "创建实例失败(" + mid(str_endpoint,8,6) + "),返回值:" + String(rVal)   )
        return 
    End IF

    String lb_result
    long llResult
    try
        llResult  =  proxy_obj.of_add(1,2)
        Messagebox("提示"  , "proxy_obj.of_add(1,2) = " + String(llResult) )        
    catch (SoapException e1)   
        MessageBox("提示", "发生SoapException(" + mid(str_endpoint,8,6) + "),请检查组件发布是否正确!'~r~n" + e1.Text)    
        return  
    catch (PBXRuntimeError e2)   
        MessageBox("提示", "发生PBXRuntimeError,请检查客户端程序是否正确! ~r~n" + e2.Text)
        return  
    catch (RuntimeError e3)   
        MessageBox("提示", "发生RuntimeError,请检查客户端程序是否正确~r~n" + e3.Text)
        return  
    end try

End

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值