tiptop开发webservice详细步骤

一:服务端开发

1:tiptop所有的接口都是通过aws_ttsrv2.4gl 这个程序接收进来的,接口的地址一般是 [url=http://[tiptop_ip]/web/ws/r/aws_ttsrv2?WSDL%20]http://[TIPTOP_IP]/web/ws/r/aws_ttsrv2?WSDL[/url] 其中TIPTOP IP 为
TOP GP 服务器的IP地址,替换IP后在IE浏览器能访问这个地址则证明你的接口是通的,调试接口有一个很重要的工具soap ui,具体怎么用可以百度,没搜出来的可以跟帖回我,这里就不详细讲了
2:针对每个接口程序,我们一般会在aws_ttsrv2_service.4gl 程序里面去新添加他的接口名,以及调用FUNCTION,这个是第一步,具体怎么加可以下载 /u1/topprod/tiptop/aws/4gl/aws_ttsrv2_service.4gl 参考里面任意一个接口程序的写法
3:在aws_ttsrv2_service.4gl添加好你的接口程序后,就需要去定义你的接口程序,一般命名就是aws_xxxx.4gl,这个程序就是aws_ttsrv2_service.4gl里面要调用的程序,里面写你需要的XML数据抓取,程序逻辑处理,状态返回等,前面的三个步骤大致如下图所示,程序撰写方式可以在aws/4gl目录下随便参考一个
tiptop开发webservice详细步骤_第1张图片
4:程序撰写上传成功后,就需要去p_link 将你的程序链接到aws_ttsrv2上面,这样你的程序才能被主程序找到
5:在aws_ttcfg2 新增你的接口信息,让webservice服务器能识别的到,如下图
tiptop开发webservice详细步骤_第2张图片
6:前面几个步骤完成后,就需要去重新产生你的WSDL档了,方式为在aws/4gl目录运行以下命令:
r.r2 aws_ttsrv2 -W http://serverURL #这里的serverURL 就是你的webservice地址和端口
运行完后,他会提示你生成的位置,你到那个路径下下载你的wsdl文件,查找你的服务名,如果存在,则代表生成成功!
成功后在soap ui 载入这个wsdl文件,那么其他系统就能直接使用这个接口了

7:XML文件的制作
tiptop 对应接口的XML文件很简单,在soap ui中找到你的接口,只需要把你的数据按指定格式填好就行了
下面粘贴一个示例,基本都是按照这个格式来的

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tip="http://www.dsc.com.tw/tiptop/TIPTOPServiceGateWay">
  <soapenv:Header />
  <soapenv:Body>
    <tip:CreateApmt110bwDataRequest>               #这里就是你添加的服务名
      <tip:request>
        <Request>
          <Access>
            <Authentication user="tiptop" password="tiptop" />          #这里的数据其实是不抓的
            <Connection application="EFGP" source="192.168.1.2" />
            <Organization name="XXX" />
            <Locale language="zh_cn" />
          </Access>
          <RequestContent>
            <Document>
              <RecordSet id="1">
                <Master name="rva_file">     #这里是数据单头信息
                  <Record>
                    <Field name="rva07" value="XXXXXXXXXXXXXX" />
                    <Field name="rva05" value="XXXXX" />
                    <Field name="rva06" value="2017-11-01T00:00:00" />
                  </Record>
                </Master>
                <Detail name="rvb_file">   #这里是数据单身信息
                  <Record>
                    <Field name="rvb02" value="1" />
                    <Field name="rvb03" value="1" />
                    <Field name="rvb04" value="XXXXXX" />
                    <Field name="rvb05" value="XXXXXXXXXXXX" />
                    <Field name="rvb07" value="XXXX" />
                    <Field name="rvb36" value="XXXXXX" />
                    <Field name="rvb38" value=" " />
                    <Field name="rvb39" value="Y" />
                    <Field name="rvb89" value="N" />
                  </Record>
                </Detail>
              </RecordSet>
            </Document>
          </RequestContent>
        </Request>
      </tip:request>
    </tip:CreateApmt110bwDataRequest>
  </soapenv:Body>
</soapenv:Envelope>

8:程序制作完了,也上传完了,接下来就是测试了,接口测试需要借助soap ui工具,测试步骤看附件吧

二:客户端开发

客户端开发比较简答,可以通过工具自动生成所需程序
1:首先要知道对方服务器的连接地址,就是那个已?wsdl结束的地址,在浏览器打开,如果能成功看到类似下面的页面,说明可以访问
tiptop开发webservice详细步骤_第3张图片
2:进入cws/4gl目录(其实随便哪个目录都行,你想放哪个放哪个),运行fglwsdl http://10.1.32.227//services/WorkflowService?wsdl (这个地址是服务器的地址,需要替换成你要访问服务器的) 运行成功后会在当前目录生成一个4gl文件和inc文件,4gl文件提供调用方法,inc文件提供变量定义
3:接下来就是调用了,定义好传入变量的数据,调用函数,返回值,写法就和一般的程序一样了!

三:接口调试(debug)

debug工具:soapui,下载地址sopui
1:因为tiptop的接口不能自动转换<,所以xml文件里面的<需要替换成< 如下图
tiptop开发webservice详细步骤_第4张图片
2.打开soapui ,输入wsdl
tiptop开发webservice详细步骤_第5张图片
3.输入后右边有对应的接口代码,点击对应的接口代码的request
tiptop开发webservice详细步骤_第6张图片
4、将?号替换成你刚处理的xml那段资料
tiptop开发webservice详细步骤_第7张图片
5.将对应的接口地址 修改下端口 8090 (端口需要大于8090 如 8091,8092,不可以小于8090)
tiptop开发webservice详细步骤_第8张图片
6. 然后执行以下代码后面的8090 就是上面修改对应的端口号

#1:aws/4gl目录
cd aws/4gl
#2:debug
r.d2+ aws_ttsrv2 -S 8090  # -S为大写的

在这里插入图片描述
7.bebug 从这里进去
tiptop开发webservice详细步骤_第9张图片
8.然后进去这里,点击F11进去后画面会一直显示转圈,然后你要到saopui那边执行
tiptop开发webservice详细步骤_第10张图片
9. 返回sopui,请求接口
tiptop开发webservice详细步骤_第11张图片
10.就能进去对应的4gl里面去
在这里插入图片描述
后面的debug 跟其他程序的debug一样的

四:接口函数介绍

    CALL aws_ttsrv_preprocess()   #接口数据验证函数,正确了才能继续下一步
    CALL aws_ttsrv_postprocess()  #接口完成后数据返回
    LET l_cnt1 = aws_ttsrv_getMasterRecordLength("ina_file")  #用于获取ina_file节点的个数
    LET g_node1 = aws_ttsrv_getMasterRecord(l_i, "ina_file")   #获取ina_file节点的数组值
    LET g_ina.ina02 = aws_ttsrv_getRecordField(g_node1, "ina02" ) #获取节点里面的实际字段值

你可能感兴趣的:(tiptop)