Project

General

Profile

soap_hdr_1.p

Marius Gligor, 06/30/2014 08:59 AM

Download (4.06 KB)

 
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.