1
|
def var h as handle.
|
2
|
def var hp as handle.
|
3
|
def var chi as char.
|
4
|
def var cho as char.
|
5
|
def var ch as char.
|
6
|
|
7
|
procedure proc0.
|
8
|
def input param hHeader as handle.
|
9
|
def input param c1 as char.
|
10
|
def input param c2 as char.
|
11
|
|
12
|
DEFINE VARIABLE hHeaderEntryref AS HANDLE.
|
13
|
DEFINE VARIABLE hXnoderef1 AS HANDLE.
|
14
|
DEFINE VARIABLE hXnoderef2 AS HANDLE.
|
15
|
DEFINE VARIABLE hXnoderef3 AS HANDLE.
|
16
|
DEFINE VARIABLE hXdoc AS HANDLE.
|
17
|
DEFINE VARIABLE v-log AS LOGICAL INIT yes.
|
18
|
|
19
|
CREATE X-DOCUMENT hXdoc.
|
20
|
CREATE SOAP-HEADER-ENTRYREF hHeaderEntryref.
|
21
|
CREATE X-NODEREF hXnoderef1.
|
22
|
CREATE X-NODEREF hXnoderef2.
|
23
|
CREATE X-NODEREF hXnoderef3.
|
24
|
|
25
|
hHeader:GET-HEADER-ENTRY(hHeaderEntryref, 1).
|
26
|
hHeaderEntryref:GET-NODE(hXnoderef1).
|
27
|
|
28
|
message hHeader:NUM-HEADER-ENTRIES.
|
29
|
message hXnoderef1:NUM-CHILDREN.
|
30
|
|
31
|
IF hHeader:NUM-HEADER-ENTRIES > 0 THEN DO:
|
32
|
hXdoc:IMPORT-NODE(hXnoderef2, hXnoderef1, yes).
|
33
|
IF hXnoderef2:NUM-CHILDREN > 0 THEN DO:
|
34
|
hXnoderef2:GET-CHILD(hXnoderef3, 1).
|
35
|
message hXnoderef3:NODE-VALUE.
|
36
|
END.
|
37
|
END.
|
38
|
|
39
|
/* Procedure/header cleanup */
|
40
|
DELETE OBJECT hXnoderef1.
|
41
|
DELETE OBJECT hXnoderef2.
|
42
|
DELETE OBJECT hXnoderef3.
|
43
|
DELETE OBJECT hHeaderEntryref.
|
44
|
end.
|
45
|
|
46
|
procedure proc1.
|
47
|
def output param hHeader as handle.
|
48
|
def input param c1 as char.
|
49
|
def input param c2 as char.
|
50
|
def output param lDelete as log.
|
51
|
|
52
|
def var cUsername as char init "usr".
|
53
|
def var cPassword as char init "psw".
|
54
|
|
55
|
lDelete = no.
|
56
|
/*1*/
|
57
|
DEFINE VARIABLE hHeaderEntryref AS HANDLE.
|
58
|
DEFINE VARIABLE hXnoderef1 AS HANDLE.
|
59
|
DEFINE VARIABLE hXnoderef2 AS HANDLE.
|
60
|
DEFINE VARIABLE hXAttribute AS HANDLE.
|
61
|
DEFINE VARIABLE hXtext AS HANDLE.
|
62
|
DEFINE VARIABLE hXdoc AS HANDLE.
|
63
|
DEFINE VARIABLE v-log AS LOGICAL INIT yes.
|
64
|
/*2*/
|
65
|
DEFINE VARIABLE ClientNS AS CHARACTER
|
66
|
INIT "http://ServiceHost/SOAPHeader".
|
67
|
/*3*/
|
68
|
/* Create SOAP header and server objects */
|
69
|
CREATE SOAP-HEADER hHeader.
|
70
|
CREATE SOAP-HEADER-ENTRYREF hHeaderEntryref.
|
71
|
/*4*/
|
72
|
/* Create x-doc objects to build header */
|
73
|
CREATE X-DOCUMENT hXdoc.
|
74
|
CREATE X-NODEREF hXAttribute.
|
75
|
CREATE X-NODEREF hXnoderef1.
|
76
|
CREATE X-NODEREF hXnoderef2.
|
77
|
CREATE X-NODEREF hXtext.
|
78
|
/*5*/
|
79
|
/* Create the header entry */
|
80
|
hHeader:ADD-HEADER-ENTRY(hHeaderEntryref).
|
81
|
/* Create the header namespace data */
|
82
|
hXdoc:CREATE-NODE-NAMESPACE(hXnoderef1, ClientNS, "AuthHeader", "ELEMENT").
|
83
|
hXdoc:CREATE-NODE-NAMESPACE(hXAttribute, "http://www.w3.org/2000/xmlns/", "xmlns", "ATTRIBUTE").
|
84
|
hXAttribute:NODE-VALUE = ClientNS.
|
85
|
hXnoderef1:SET-ATTRIBUTE-NODE(hXAttribute).
|
86
|
hXdoc:INSERT-BEFORE(hXnoderef1, ?).
|
87
|
/*7*/
|
88
|
/* Create the Username/Password data */
|
89
|
hXdoc:CREATE-NODE-NAMESPACE(hXnoderef2, ClientNS, "UserName", "ELEMENT").
|
90
|
hXnoderef1:APPEND-CHILD(hXnoderef2).
|
91
|
hXdoc:CREATE-NODE(hXtext,"","text").
|
92
|
hXnoderef2:APPEND-CHILD(hXtext).
|
93
|
hXtext:NODE-VALUE = cUsername.
|
94
|
/*8*/
|
95
|
hXdoc:CREATE-NODE-NAMESPACE(hXnoderef2, ClientNS, "Password", "ELEMENT").
|
96
|
hXnoderef1:APPEND-CHILD(hXnoderef2).
|
97
|
hXdoc:CREATE-NODE(hXtext, "", "text").
|
98
|
hXnoderef2:APPEND-CHILD(hXtext).
|
99
|
hXtext:NODE-VALUE = cPassword.
|
100
|
/*9*/
|
101
|
/* Fill the header entry using a deep copy */
|
102
|
hHeaderEntryref:SET-NODE(hXnoderef1).
|
103
|
/*9*/
|
104
|
/* Fill the header entry using a deep copy */
|
105
|
hHeaderEntryref:SET-NODE(hXnoderef1).
|
106
|
/*10*/
|
107
|
/* Procedure/header cleanup */
|
108
|
DELETE OBJECT hXdoc.
|
109
|
DELETE OBJECT hXAttribute.
|
110
|
DELETE OBJECT hXnoderef1.
|
111
|
DELETE OBJECT hXnoderef2.
|
112
|
DELETE OBJECT hXtext.
|
113
|
DELETE OBJECT hHeaderEntryref.
|
114
|
end.
|
115
|
|
116
|
create server h.
|
117
|
h:connect("-WSDL http://5.15.92.196/axis2/services/SimpleOperations?wsdl -Service SimpleOperations").
|
118
|
|
119
|
run SimpleOperationsPortType set hp on server h.
|
120
|
hp:set-callback-procedure("response-header", "proc0").
|
121
|
hp:set-callback-procedure("request-header", "proc1").
|
122
|
|
123
|
chi = "<ns1:getData xmlns:ns1='http://goldencode.com/xsd'><ns1:str>test</ns1:str></ns1:getData>".
|
124
|
run getData in hp(input chi, output cho).
|
125
|
|
126
|
message cho.
|