更多例子源码下载 https://pan.baidu.com/s/1Qb1QIUZITfIPPN_WcflscA?pwd=k4tk
1、客制好接口程序,编译自己写的程序(以下有登陆的接口的例子)
2、在aws_ttsr v2_ser vice.4gl里添加服务名称
3、在aws_ttsr v2的link里添加新写的端口程序
4、在aws_ttcfg2(集成服务SERVER端设置作业)里维护
5、关闭aws服务
查找指令:ps -ef|grep 'aws_ttsrv2'
一般会找到3个,grep的那个不管,另2个进程杀掉
指令: kill -9 进程号
6、重启服务
5.1以上版本 重启服务用指令:startws
5.1版本 重启服务用指令:startweb as start
7、打开网页
http://IP地址:端口号/ws/r/aws_ttsrv2?WSDL
8、找到刚才添加的服务名称,就表示成功
# Prog. Version..: '5.30.06-13.03.12(00000)' #
#
# Descriptions...: 掃描作業用戶登錄驗證
# Date & Author..: 2022-12-06 By Lian
DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
GLOBALS "../../../tiptop/aws/4gl/aws_ttsrv2_global.4gl" #TIPTOP Service Gateway
DEFINE g_login RECORD
username LIKE type_file.chr20,
plant LIKE type_file.chr50,
realname LIKE type_file.chr50,
departcode LIKE type_file.chr20,
departname LIKE type_file.chr50,
access VARCHAR(4000)
END RECORD
FUNCTION aws_login_check2()
WHENEVER ERROR CONTINUE
CALL aws_ttsrv_preprocess() #呼叫服務前置處理程序 #FUN-860037
IF g_status.code = "0" THEN
CALL aws_login_check2_process()
END IF
CALL aws_ttsrv_postprocess() #呼叫服務後置處理程序
END FUNCTION
FUNCTION aws_login_check2_process()
DEFINE l_username LIKE type_file.chr20,
l_password LIKE type_file.chr50,
l_plant LIKE type_file.chr20,
l_nn LIKE type_file.num5,
l_type LIKE type_file.chr20
DEFINE l_node om.DomNode
DEFINE l_sql STRING
DEFINE l_chk_pasword VARCHAR(100)
DEFINE l_chk_pasword1 string
INITIALIZE g_login.* TO NULL
LET l_username = aws_ttsrv_getParameter("username") #用戶id
LET l_password = aws_ttsrv_getParameter("password") #密碼
LET l_type = aws_ttsrv_getParameter("type") #取由呼叫端呼叫時給予的 SQL Condition
IF cl_null(l_username) THEN
LET g_status.code = -1
LET g_status.description = '用戶名不能為空!'
RETURN
END IF
LET l_sql =" SELECT zx10 FROM zx_file WHERE zx01 = '",l_username,"'"
PREPARE prep_aaa FROM l_sql
EXECUTE prep_aaa INTO l_chk_pasword
IF cl_null(l_chk_pasword) THEN
LET g_status.code = -1
LET g_status.description = '用戶名不存在,請重新輸入!'
RETURN
END IF
SELECT zx01,zx08,zx02,zx03 INTO g_login.username,g_login.plant,g_login.realname,g_login.departcode
FROM zx_file
WHERE zx01=l_username
IF SQLCA.SQLCODE THEN
LET g_status.code = SQLCA.SQLCODE
LET g_status.sqlcode = SQLCA.SQLCODE
END IF
IF NOT cl_null(g_login.username) THEN
CALL aws_access2(g_login.username,l_type)
END IF
IF NOT cl_null(g_login.departcode) THEN
SELECT gem02 INTO g_login.departname FROM gem_file WHERE gem01=g_login.departcode
END IF
CALL aws_ttsrv_addParameterRecord(base.TypeInfo.create(g_login))
END FUNCTION
FUNCTION aws_chk_id_and_password_sec_chkz2(ls_pwd)
DEFINE ls_pwd STRING
RETURN aws_chk_id_and_password_hash_dd2("28682266",ls_pwd)
END FUNCTION
FUNCTION aws_chk_id_and_password_hash_dd2(p_token,ls_inp) #FUN-C60025
DEFINE ls_inp, ls_out STRING
DEFINE ls_demo STRING
DEFINE ls_new1,ls_new2 STRING
DEFINE li_cnt,li_i,li_j,li_move,li_tmp SMALLINT
DEFINE lc_gbt07 LIKE type_file.chr1
DEFINE p_token STRING #FUN-C60025
LET ls_inp = ls_inp.trim()
IF p_token <> "28682266" THEN #FUN-C60025 控管進入的token ,避免被外部程式不當使用
RETURN ls_inp
END IF
SELECT gbt07 INTO lc_gbt07 FROM gbt_file WHERE gbt00="0"
IF SQLCA.SQLCODE OR lc_gbt07 IS NULL OR lc_gbt07 <> "Y" THEN
RETURN ls_inp
END IF
LET li_cnt = ls_inp.subString(ls_inp.getLength(),ls_inp.getLength())
LET ls_out = ls_inp.subString(1,ls_inp.getLength()-1)
IF li_cnt > 0 THEN
FOR li_j = 1 TO li_cnt
LET ls_inp = ls_out
LET ls_new1="" LET ls_new2=""
LET li_i = TRUE
FOR li_tmp = ls_inp.getLength() TO 1 STEP -1
IF li_i THEN
LET ls_new2 = ls_inp.subString(li_tmp,li_tmp),ls_new2
LET li_i = FALSE
ELSE
LET ls_new1 = ls_new1,ls_inp.subString(li_tmp,li_tmp)
LET li_i = TRUE
END IF
END FOR
LET ls_out = ls_new1,ls_new2
END FOR
END IF
LET li_move = ls_out.subString(ls_out.getLength()-1,ls_out.getLength())
LET ls_inp = ls_out.subString(1,ls_out.getLength()-2)
#Seed
LET ls_demo = "7D#wG^>t4H&s3KAz5B!y6C<@x)pLJ(q]1nN_mOl,P8E$v9F[%u0o-MI*r2kQ.jRi:ShT;gUf?VeW+dXc|Yb~Za `='",'"'
LET ls_out = ""
FOR li_i = 1 TO ls_inp.getLength()
LET li_tmp = ls_demo.getIndexOf(ls_inp.subString(li_i,li_i),1)
IF li_tmp > 0 THEN
IF li_tmp < li_move THEN
LET li_tmp = li_tmp + 91 - li_move
ELSE
LET li_tmp = li_tmp - li_move
END IF
#樣本字串裡存在的
LET ls_out = ls_out,ls_demo.subString(li_tmp,li_tmp)
ELSE
#樣本字串裡不存在的
LET ls_out = ls_out,ls_inp.subString(li_i,li_i)
END IF
END FOR
LET ls_out = ls_out.subString(3,ls_out.getLength()-4)
RETURN ls_out
END FUNCTION
FUNCTION aws_access2(p_username,p_type)
DEFINE p_username LIKE zx_file.zx01
DEFINE p_type LIKE type_file.chr20
DEFINE l_sql ,ls_sql STRING
DEFINE l_n LIKE type_file.num5
DEFINE l_tc_auth RECORD LIKE tc_auth_file.*
DEFINE l_access VARCHAR(4000)
DEFINE l_t LIKE type_file.num10
DEFINE l_tc_authg03 LIKE tc_authg_file.tc_authg03
DROP TABLE x
CREATE TEMP TABLE x(
a VARCHAR(10))
DELETE FROM x
LET l_n=0
LET g_login.access=''
SELECT COUNT(*) INTO l_n FROM tc_auth_file WHERE tc_auth01=p_username
IF l_n=0 THEN
LET g_login.access=''
ELSE
# LET l_t = g_login.access.getLength()
# LET g_login.access= g_login.access.subString(1,l_t-1)
###SELECT to_char(WM_CONCAT(b.a)) INTO g_login.access FROM (SELECT DISTINCT a FROM x) b
### SELECT to_char(WM_CONCAT(b.a)) INTO g_login.access FROM (SELECT DISTINCT a FROM x) b
LET ls_sql=" SELECT DISTINCT a FROM x "
## PREPARE sina_m3_t2 FROM ls_sql
## EXECUTE sina_m3_t2 INTO g_login.access
PREPARE access_pre2 FROM ls_sql
DECLARE access_cur2 CURSOR FOR access_pre2
FOREACH access_cur2 INTO l_tc_authg03
IF STATUS THEN
EXIT FOREACH
END IF
IF cl_null(g_login.access) THEN
LET g_login.access = l_tc_authg03
ELSE
LET g_login.access =g_login.access,',', l_tc_authg03
END IF
END FOREACH
END IF
DROP TABLE x
END FUNCTION
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tip="http://www.dsc.com.tw/tiptop/TIPTOPServiceGateWay">
<soapenv:Header/>
<soapenv:Body>
<tip:LoginCheck2Request>
<tip:request>
<Request>
<Access>
<Authentication password="tiptop" user="user06"/>
<Connection application="APP" source="" />
<Organization name="TIPTOP" />
<Locale language="zh_cn" />
</Access>
<RequestContent>
<Parameter>
<Record>
<Field name="username" value="user06" />
</Record>
</Parameter>
<Document/>
</RequestContent>
</Request>
</tip:request>
</tip:LoginCheck2Request>
</soapenv:Body>
</soapenv:Envelope>