PTLib
Version 2.14.3
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
psoap.h
Go to the documentation of this file.
1
/*
2
* psoap.h
3
*
4
* SOAP client / server classes.
5
*
6
* Portable Windows Library
7
*
8
* Copyright (c) 2003 Andreas Sikkema
9
*
10
* The contents of this file are subject to the Mozilla Public License
11
* Version 1.0 (the "License"); you may not use this file except in
12
* compliance with the License. You may obtain a copy of the License at
13
* http://www.mozilla.org/MPL/
14
*
15
* Software distributed under the License is distributed on an "AS IS"
16
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17
* the License for the specific language governing rights and limitations
18
* under the License.
19
*
20
* The Original Code is Portable Windows Library.
21
*
22
* The Initial Developer of the Original Code is Andreas Sikkema
23
*
24
* Contributor(s): ______________________________________.
25
*
26
* $Revision: 27039 $
27
* $Author: rjongbloed $
28
* $Date: 2012-02-22 18:19:46 +1100 (Wed, 22 Feb 2012) $
29
*/
30
31
32
#ifndef PTLIB_PSOAP_H
33
#define PTLIB_PSOAP_H
34
35
#ifdef P_USE_PRAGMA
36
#pragma interface
37
#endif
38
39
40
#if P_SOAP
41
42
#include <
ptclib/pxml.h
>
43
#include <
ptclib/http.h
>
44
45
46
#define DEFAULT_SOAP_URL "/soap"
47
48
53
54
class
PSOAPMessage
:
public
PXML
55
{
56
PCLASSINFO(
PSOAPMessage
,
PXML
);
57
public
:
58
60
PSOAPMessage
(Options options = Indent + NewLineAfterElement);
61
63
PSOAPMessage
(
const
PString
& method,
const
PString
& nameSpace );
64
66
void
SetMethod
(
const
PString
& name,
const
PString
& nameSpace,
const
PString
& methodPrefix =
"m:"
);
67
69
void
GetMethod
(
PString
& name,
PString
& nameSpace );
70
72
void
AddParameter
(
PString
name,
PString
type,
PString
value );
73
75
void
AddParameter
(
PXMLElement
* parameter,
PBoolean
dirty =
true
);
76
78
PBoolean
GetParameter
(
const
PString
& name,
PString
& value );
79
81
PBoolean
GetParameter
(
const
PString
& name,
int
& value );
82
84
PXMLElement
*
GetParameter
(
const
PString
& name );
85
87
PBoolean
Load
(
const
PString
& str);
88
90
enum
91
{
93
NoFault
,
95
VersionMismatch
,
97
MustUnderstand
,
99
Client
,
101
Server
102
};
103
104
PINDEX
GetFaultCode
()
const
{
return
faultCode; }
105
PString
GetFaultText
()
const
{
return
faultText; }
106
void
SetFault
( PINDEX code,
const
PString
& text );
107
108
private
:
109
PXMLElement
* pSOAPBody;
110
PXMLElement
* pSOAPMethod;
111
PString
faultText;
112
PINDEX faultCode;
113
};
114
115
120
class
PSOAPServerRequestResponse
:
public
PObject
121
{
122
PCLASSINFO(
PSOAPServerRequestResponse
,
PObject
);
123
public
:
124
PSOAPServerRequestResponse
(
PSOAPMessage
& req )
125
:
request
( req ) { }
126
127
PSOAPMessage
&
request
;
128
PSOAPMessage
response
;
129
};
130
131
133
class
PSOAPServerMethod
:
public
PString
134
{
135
PCLASSINFO(
PSOAPServerMethod
,
PString
);
136
public
:
137
PSOAPServerMethod
(
const
PString
& name )
138
:
PString
( name ) { }
139
140
PNotifier
methodFunc
;
141
};
142
143
PSORTED_LIST
(PSOAPServerMethodList,
PSOAPServerMethod
);
144
145
147
class
PSOAPServerResource
:
public
PHTTPResource
148
{
149
PCLASSINFO(
PSOAPServerResource
,
PHTTPResource
);
150
public
:
151
PSOAPServerResource
();
152
PSOAPServerResource
(
153
const
PHTTPAuthority
& auth
154
);
155
PSOAPServerResource
(
156
const
PURL
& url
157
);
158
PSOAPServerResource
(
159
const
PURL
& url,
160
const
PHTTPAuthority
& auth
161
);
162
163
// overrides from PHTTPResource
164
PBoolean
LoadHeaders
(
PHTTPRequest
& request );
165
PBoolean
OnPOSTData
(
PHTTPRequest
& request,
const
PStringToString
& data );
166
167
// new functions
168
virtual
PBoolean
OnSOAPRequest
(
const
PString
& body,
PString
& reply );
169
virtual
PBoolean
SetMethod
(
const
PString
& methodName,
const
PNotifier
& func );
170
PBoolean
OnSOAPRequest
(
const
PString
& methodName,
PSOAPMessage
& request,
PString
& reply );
171
172
virtual
PSOAPMessage
FormatFault
( PINDEX code,
const
PString
& str );
173
175
178
void
SetSOAPAction
(
PString
saction ) { soapAction = saction; }
179
180
protected
:
181
PMutex
methodMutex
;
182
PSOAPServerMethodList
methodList
;
183
private
:
184
PString
soapAction;
185
};
186
187
192
class
PSOAPClient
:
public
PObject
193
{
194
PCLASSINFO(
PSOAPClient
,
PObject
);
195
public
:
196
197
PSOAPClient
(
const
PURL
&
url
);
198
199
void
SetTimeout
(
const
PTimeInterval
& _timeout ) {
timeout
= _timeout; }
200
201
PBoolean
MakeRequest
(
const
PString
& method,
const
PString
& nameSpace );
202
PBoolean
MakeRequest
(
const
PString
& method,
const
PString
& nameSpace,
PSOAPMessage
& response );
203
PBoolean
MakeRequest
(
PSOAPMessage
& request,
PSOAPMessage
& response );
204
205
PString
GetFaultText
()
const
{
return
faultText
; }
206
PINDEX
GetFaultCode
()
const
{
return
faultCode
; }
207
209
void
setSOAPAction
(
PString
saction ) { soapAction = saction; }
210
protected
:
211
PBoolean
PerformRequest
(
PSOAPMessage
& request,
PSOAPMessage
& response );
212
213
PURL
url
;
214
PINDEX
faultCode
;
215
PString
faultText
;
216
PTimeInterval
timeout
;
217
private
:
218
PString
soapAction;
219
};
220
221
222
#endif // P_SOAP
223
224
225
#endif // PTLIB_PSOAP_H
226
227
228
// End of file ////////////////////////////////////////////////////////////////
include
ptclib
psoap.h
Generated on Fri Oct 10 2014 21:15:13 for PTLib by
1.8.3.1