Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2008, 12h35   #1
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 0
Points : 0
Par défaut [SOAP] Problème d'authentification

Bonjour,
débutant en Webservices avec php, je suis amené dans mon projet à développer un client soap en php.
La partie serveur étant une "boite noire", je ne dispose que de l'url du fichier wsdl.
La récupération des types et fonctions possibles du coté serveur se trouvent ici :

(Résultat du code php)

Citation:
<h1>Les fonctions </h1>
GetObjectsResponse GetObjects(GetObjectsRequest $request)
ExecuteChangesResponse ExecuteChanges(ExecuteChangesRequest $request)
ObjectSetType ExecuteSearch(SearchRequestType $request)
GetSearchMetadataResponse GetSearchMetadata(GetSearchMetadataRequest $request)

<h1>Les types </h1>
string GuidType
struct PropertyType { string propertyId; boolean settable; }
struct ModifiablePropertyType { }
.....

La ou je coince c'est que pour appeller ces fonctions je dois m'authentifier à l'application via la classe SoapHeader.

Malgré la création d'une instance de soapHeader, l'appel de la fonction me requiert toujours l'authentification.

Voici la norme requise pour la création de l'header correcte fourni par la documentation coté serveur.

Citation:
An example XML schema for a security header is shown below.

<wsse:Security xmlns:wsse={see below}>
<wsse:UsernameToken>
<wsse:Username>{username}</wsse:Username>
<wsseassword>{password}</wsseassword>
</wsse:UsernameToken>
</wsse:Security>

The namespace for which the wsse: prefix is used above can be any one of the following, reflecting different versions of the WS-Security specification:

* http://schemas.xmlsoap.org/ws/2002/04/secext
* http://schemas.xmlsoap.org/ws/2002/07/secext
* http://schemas.xmlsoap.org/ws/2002/12/secext
* http://schemas.xmlsoap.org/ws/2003/06/secext
* http://www.docs.oasis-open.org/wss/2...secext-1.0.xsd
* http://docs.oasis-open.org/wss/2004/...secext-1.0.xsd


Pour info : je n'utilise pas nusoap mais l'extention de php 5

Voici le code coté client :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php 
define ("URLWSDL", 'http://monserver/FNCEWS35SOAP/WSDL');
ini_set("soap.wsdl_cache_enabled", false);
 
try
{
 
 
 
 
// Log in using the list owner's id and password
$username="test";
$password="test";
 
//création du webservice
 
$client = new soapclient(URLWSDL); 
//création de l'header
$params = array( "Username" => $username,"Password" => $password);
...
 
$headerSOAP=new SoapHeader("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",$params['Username'],$params['Password']) ;
 
.....
 
$client->__setSoapHeaders($headerSOAP);
echo $client->__soapcall("getObjects", array($idmType,$guid));
 
.....
}catch(Exception $e)
{
	print $e;
}

Le résultat de l'appel de la fonction me retourne exeption soaph : SoapFault exception: [SOAP-ENV:Server] The user is not authenticated.

De plus, pourriez vous me dire pourquoi j'ai une représentation de mon code source PHP le tout en commentaire visible sur le navigateur lors de la création de l'header c'est à dire à cette ligne : $headerSOAP=new SoapHeader("....",$params['Username'],$params['Password']) ;

Merci d'avance pour votre aide.

Au cas où, il faut fournir le wsdl , je peux le poster
Maelenkolix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 17h03   #2
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Salut à toi.

Je n'ai jamais utilisé l'authentification, ni de SoapHeaders, donc je ne vais pas être d'une grande aide désolé.

Déjà la fonction __setSoapHeaders n'est pas documentée sur http://fr.php.net/manual/fr/ref.soap.php. Es-tu sûr qu'elle soit entiérement fonctionnelle ?
Tu pourrais tenter comme dans l'exemple :
Code :
1
2
3
4
5
6
7
8
<?php
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$client->__call("echoVoid", null, null,
                new SoapHeader('http://soapinterop.org/echoheader/',
                               'echoMeStringRequest',
                               'hello world'));
?>
Sinon j'ai déjà remarqué pas mal de fois, que l'annonce de l'erreur n'est pas très représentative de l'erreur, donc essaie de t'assurer que tout ce qu'il y autour fonctionne bien

Et tu peux poster le wsdl ca serait bien oui, enfin surtout la définition de la méthode que tu as indiqué dans ton exemple.
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 10h13   #3
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 0
Points : 0
Salut Guybrush113,

En effet, après recherches dans des bouquins cette fonction ne fait pas partie de la bibliothèque PHP.(héritage du c++

Comme le mentionnait le livre : la classe SOAPHEADER peut être utilisée directement dans la méthode SoapClient->__soapCall() pour passer un entête SOAP
Soapheader ne contient qu'une seule méthode son constructeur

Voici donc le code modifié mais malheureusement avec la même erreur.

Code :
1
2
3
4
5
6
7
 
echo "<h2>Test soapheader :</h2></br>";
 
$idmType=1;
$guid="{XXX}";
$paramsGetObj=array($idmType,$guid);
echo $client->__soapcall("getObjects", $paramsGetObj,Null,new SoapHeader("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",$params['Username'],$params['Password']),$out);

l'erreur :
Code :
1
2
3
Test soapheader :
 
exeption soapheader : SoapFault exception: [SOAP-ENV:Server] The user is not authenticated. in C:\www$\workspace\SoapConnection\client\index.php:63 Stack trace: #0 C:\www$\workspace\SoapConnection\client\index.php(63): SoapClient->__soapCall('getObjects', Array, NULL, Object(SoapHeader), Array) #1 {main

Voici le wsdl :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?xml version="1.0"?>
 
<definitions
			name="FNCEWS35SOAP"
			targetNamespace="http://www.filenet.com/ns/fnce/2005/02/ws/SOAP/wsdl"
          	xmlns="http://schemas.xmlsoap.org/wsdl/"
 		  	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          	xmlns:sdef="http://www.filenet.com/ns/fnce/2005/02/ws/SOAP/wsdl"
          	xmlns:cdef="http://www.filenet.com/ns/fnce/2005/02/ws/wsdl"
          	xmlns:ctyp="http://www.filenet.com/ns/fnce/2005/02/ws/schema" >
 
	<import location="FNCEWS35.wsdl" namespace="http://www.filenet.com/ns/fnce/2005/02/ws/wsdl"/>
 
   	<binding name="FNCEWS35SoapBinding" type="cdef:FNCEWS35PortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetObjects">
           	<soap:operation soapAction="http://www.filenet.com/ns/fnce/2005/02/ws/SOAP#GetObjects"/>
           	<input>
				<soap:header message="cdef:LocalizationHeader" part="header" use="literal"/>
                <soap:body use="literal"/>
           	</input>
           	<output>
               	<soap:body use="literal"/>
           </output>
		   <fault name="GeneralError">
				<soap:fault name="GeneralError" use="literal"/>
		   </fault>
        </operation>
        <operation name="ExecuteChanges">
           	<soap:operation soapAction="http://www.filenet.com/ns/fnce/2005/02/ws/SOAP#ExecuteChanges"/>
           	<input>
				<soap:header message="cdef:LocalizationHeader" part="header" use="literal"/>
               	<soap:body use="literal"/>
           	</input>
           	<output>
               	<soap:body use="literal"/>
           </output>
		   <fault name="GeneralError">
				<soap:fault name="GeneralError" use="literal"/>
		   </fault>
        </operation>
        <operation name="ExecuteSearch">
           	<soap:operation soapAction="http://www.filenet.com/ns/fnce/2005/02/ws/SOAP#ExecuteSearch"/>
           	<input>
				<soap:header message="cdef:LocalizationHeader" part="header" use="literal"/>
                <soap:body use="literal"/>
           	</input>
           	<output>
               	<soap:body use="literal"/>
           </output>
		   <fault name="GeneralError">
				<soap:fault name="GeneralError" use="literal"/>
		   </fault>
        </operation>
        <operation name="GetSearchMetadata">
           	<soap:operation soapAction="http://www.filenet.com/ns/fnce/2005/02/ws/SOAP#GetSearchMetadata"/>
           	<input>
				<soap:header message="cdef:LocalizationHeader" part="header" use="literal"/>
                <soap:body use="literal"/>
           	</input>
           	<output>
               	<soap:body use="literal"/>
           	</output>
		   	<fault name="GeneralError">
				<soap:fault name="GeneralError" use="literal"/>
		   	</fault>
        </operation>
	</binding>
 
    <service name="FNCEWS35Service">
        <documentation>FileNET P8 Content Engine Web Service</documentation>
        <port name="FNCEWS35InlinePort" binding="sdef:FNCEWS35SoapBinding">
           	<soap:address location="http://localhost:6070/FNCEWS35SOAP/"/>
        </port>
    </service>
 
</definitions>



pour info : Pour le problème du double code c'était un soucis du cache .

Mais pour ce qu'il y autour j'ai fait plusieurs tests.
Par exemple : un mauvais appel de la méthode GetOBJECTS cela me représente correctement l' erreur :<quote>exeption soapheader : SoapFault exception: [Client] Function ("getObjcts") is not a valid method for this service in ....</quote>
De plus, mes variables de php.ini sont :
display_errors = On
error_reporting = E_ALL
Pour ma part ce qu'il y a autour semble correct, maintenant si tu as d'autres suggestions je suis tout ouï.


Merci à toi
Maelenkolix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 11h26   #4
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Ce qui me perturbe un peu avec ce SoapHeader, c'est qu'a mon avis tu ne dois pas balancer juste les valeurs de ton login et mot de passe.
Je pense qu'il faut faire comme l'appel des méthodes en plaçant les paramètres dans un tableau.

Essaie peut-être de faire comme dans les exemples à cette page :
http://fr.php.net/manual/fr/function...-construct.php
Code :
1
2
3
4
5
6
 $auth->username = $this->username;
$auth->password = $this->password;
 
$authvalues = new SoapVar($auth, SOAP_ENC_OBJECT);
$header =  new SoapHeader($this->name_space, "Authentication", // Rename this to the tag you need
                                                          $authvalues, false);
Enfin lit bien tout les commentaires et exemples, il n'y a pas grand chose, mais je pense que la solution ne doit pas être loin.

Sinon pour le WSDL :
Code :
<import location="FNCEWS35.wsdl"
Il manque cette partie ^^
Il doit y avoir la définition des méthodes et leur paramètres, et avec le Header également je pense.

Bon courage !
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2008, 10h13   #5
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 0
Points : 0
Salut
Voici le fichier FNCEWS35.wsdl
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<?xml version="1.0"?>
<definitions
			name="FNCEWS35"
			targetNamespace="http://www.filenet.com/ns/fnce/2005/02/ws/wsdl"
          	xmlns="http://schemas.xmlsoap.org/wsdl/"
 		  	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
          	xmlns:cdef="http://www.filenet.com/ns/fnce/2005/02/ws/wsdl"
          	xmlns:ctyp="http://www.filenet.com/ns/fnce/2005/02/ws/schema" >
	<types>
 
		<xsd:schema 
					xmlns="http://www.filenet.com/ns/fnce/2005/02/ws/schema"
			 		targetNamespace="http://www.filenet.com/ns/fnce/2005/02/ws/schema"
			 		elementFormDefault="qualified">
 
		<!-- ***Property representations*** -->
 
			<!-- Stringized GUID -->
			<xsd:simpleType name="GuidType">
				<xsd:restriction base="xsd:string">
					<xsd:pattern value="\{[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}\}"/>
				</xsd:restriction>
			</xsd:simpleType>
 
			<!-- Abstract base -->
			<xsd:complexType name="PropertyType" abstract="true">
				<xsd:attribute name="propertyId" type="xsd:string" use="required"/>
				<xsd:attribute name="settable" type="xsd:boolean"/>
			</xsd:complexType>
 
			<!-- Secondary base, for property types that are modifiable -->
			<!-- (i.e. may appear in an ExecuteChanges action)          -->
			<xsd:complexType name="ModifiablePropertyType" abstract="true">
				<xsd:complexContent>
					<xsd:extension base="PropertyType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<!-- Singleton types -->
			<xsd:complexType name="SingletonBoolean">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:boolean" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonBinary">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:base64Binary" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonDateTime">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:dateTime" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonFloat64">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:double" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonId">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="GuidType" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonInteger32">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:int" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonObject">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="ObjectEntryType" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="SingletonString">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:string" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<!-- Lists of scalars -->
 
			<xsd:complexType name="ListOfBoolean">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:boolean" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfBinary">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:base64Binary" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfDateTime">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:dateTime" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfFloat64">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:double" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfId">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="GuidType" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfInteger32">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
La suite du code dans l'autre post.
Maelenkolix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2008, 10h15   #6
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 0
Points : 0
Voici la suite :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfObject">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="DependentObjectType" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ListOfString">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<!-- Enumerations -->
 
			<xsd:complexType name="EnumOfObject">
				<xsd:complexContent>
					<xsd:extension base="PropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="ObjectValue" minOccurs="0" maxOccurs="unbounded"/>
							<xsd:element name="CollectionTerminator" type="CollectionTerminatorType" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<!-- Content pseudo-property -->
 
			<xsd:complexType name="ContentData">
				<xsd:complexContent>
					<xsd:extension base="ModifiablePropertyType">
						<xsd:sequence>
							<xsd:element name="Value" type="ContentType"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
 
		<!-- ***Objects and sets of objects*** -->
 
			<!-- Base for all representations of object -->
			<xsd:complexType name="ObjectEntryType" abstract="true"/>
 
			<!-- Types used in outbound representations of object-valued
				 properties -->
 
			<xsd:complexType name="WithObjectIdentityType" abstract="true">
				<xsd:complexContent>
					<xsd:extension base="ObjectEntryType">
						<xsd:attribute name="classId" type="xsd:string"/>
						<xsd:attribute name="objectId" type="xsd:string"/>
						<xsd:attribute name="objectStore" type="xsd:string"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ObjectValue">
				<xsd:complexContent>
					<xsd:extension base="WithObjectIdentityType">
						<xsd:sequence>
							<xsd:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded"/>
						</xsd:sequence>
						<xsd:attribute name="updateSequenceNumber" type="xsd:int"/>
						<xsd:attribute name="accessAllowed" type="xsd:int"/>
						<xsd:attribute name="superClasses">
							<xsd:simpleType>
								<xsd:list itemType="xsd:string"/>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ObjectReference">
				<xsd:complexContent>
					<xsd:extension base="WithObjectIdentityType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="RetrievalError">
				<xsd:complexContent>
					<xsd:extension base="WithObjectIdentityType">
						<xsd:sequence>
							<xsd:element name="ErrorStack" type="ErrorStackType"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<!-- Type representing an unevaluated object property -->
			<xsd:complexType name="Unevaluated">
				<xsd:complexContent>
					<xsd:extension base="ObjectEntryType">
						<xsd:sequence>
							<xsd:element name="ParentReference" type="ObjectReference" minOccurs="0"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<!-- Additional type for specifying objects in requests -->
			<xsd:complexType name="ObjectSpecification">
				<xsd:annotation>
					<xsd:documentation xml:lang="en">
						An ObjectSpecification can be used in a request anywhere
						that calls for an ObjectReference
					</xsd:documentation>
				</xsd:annotation>
				<xsd:complexContent>
					<xsd:extension base="ObjectReference">
						<xsd:attribute name="path" type="xsd:string"/>
						<xsd:attribute name="propertyId" type="xsd:string"/>
						<xsd:attribute name="itemIndex" type="xsd:int"/>
						<xsd:attribute name="batchRef" type="xsd:IDREF"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="DependentObjectType">
				<xsd:complexContent>
					<xsd:extension base="ObjectValue">
						<xsd:attribute name="originalIndex" type="xsd:int"/>
						<xsd:attribute name="newIndex" type="xsd:int"/>
						<xsd:attribute name="dependentAction">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="Update"/>
									<xsd:enumeration value="Move"/>
									<xsd:enumeration value="Insert"/>
									<xsd:enumeration value="Delete"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ObjectSetType">
				<xsd:sequence>
					<xsd:element name="Object" type="ObjectValue" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="CollectionTerminator" type="CollectionTerminatorType" minOccurs="0"/>
				</xsd:sequence>
			</xsd:complexType>
 
			<!-- Collection terminator -->
			<xsd:complexType name="CollectionTerminatorType" abstract="true"/>
 
			<xsd:complexType name="EndOfCollection">
				<xsd:complexContent>
					<xsd:extension base="CollectionTerminatorType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="EndOfPage">
				<xsd:complexContent>
					<xsd:extension base="CollectionTerminatorType">
						<xsd:attribute name="continueFrom" type="xsd:string"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="TraversalError">
				<xsd:complexContent>
					<xsd:extension base="CollectionTerminatorType">
						<xsd:sequence>
							<xsd:element name="ErrorStack" type="ErrorStackType"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
		<!-- ***Content data*** -->
			<xsd:complexType name="ContentType" abstract="true">
				<xsd:attribute name="size" type="xsd:unsignedLong"/>
			</xsd:complexType>
 
			<xsd:complexType name="InlineContent">
				<xsd:complexContent>
					<xsd:extension base="ContentType">
						<xsd:sequence>
							<xsd:element name="Binary" type="xsd:base64Binary"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
		<!-- ***Property Filter*** -->
			<xsd:complexType name="FilterElementType">
				<xsd:simpleContent>
					<xsd:extension base="xsd:string">
						<xsd:attribute name="maxRecursion" type="xsd:int"/>
						<xsd:attribute name="maxSize" type="xsd:unsignedLong"/>
						<xsd:attribute name="maxElements" type="xsd:int"/>
					</xsd:extension>
				</xsd:simpleContent>
			</xsd:complexType>
 
			<xsd:complexType name="PropertyFilterType">
				<xsd:sequence >
					<xsd:element name="IncludeProperties" type="FilterElementType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="IncludeTypes" type="FilterElementType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="ExcludeProperties" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
				<xsd:attribute name="maxRecursion" type="xsd:int"/>
				<xsd:attribute name="maxSize" type="xsd:unsignedLong"/>
				<xsd:attribute name="maxElements" type="xsd:int"/>
			</xsd:complexType>
 
		<!-- ***ExecuteChange actions*** -->
 
			<xsd:complexType name="ModifiedPropertiesType">
				<xsd:sequence>
					<xsd:element name="Property" type="ModifiablePropertyType" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:complexType>
 
			<!-- Abstract base -->
 
			<xsd:complexType name="ActionType" abstract="true"/>
 
			<!-- Enumerated type for the reservationType flag attribute -->
			<xsd:simpleType name="ReservationType">
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="Collaborative"/>
					<xsd:enumeration value="Exclusive"/>
				</xsd:restriction>
			</xsd:simpleType>
 
			<!-- Concrete types -->
			<xsd:complexType name="CreateAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="classId" type="xsd:string" use="required"/>
						<!-- for create of RCR -->
						<xsd:attribute name="autoUniqueContainmentName" type="xsd:boolean"/>
						<xsd:attribute name="defineSecurityParentage" type="xsd:boolean"/>
						<!-- for create of versionable as a reservation -->
						<xsd:attribute name="reservationType" type="ReservationType"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="UpdateAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="DeleteAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="CheckoutAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="reservationId" type="GuidType"/>
						<xsd:attribute name="reservationType" type="ReservationType"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="CheckinAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="autoClassify" type="xsd:boolean"/>
						<xsd:attribute name="checkinMinorVersion" type="xsd:boolean"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="FreezeAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ChangeStateAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="lifecycleAction" use="required">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="Reset"/>
									<xsd:enumeration value="Promote"/>
									<xsd:enumeration value="Demote"/>
									<xsd:enumeration value="SetException"/>
									<xsd:enumeration value="ClearException"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ChangeClassAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="newClass" type="xsd:string" use="required"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="MoveContentAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="targetPolicyId" type="GuidType" use="required"/>
						<xsd:attribute name="moveAllVersions" type="xsd:boolean"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="LockAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="timeout" type="xsd:unsignedInt" use="required"/>
						<xsd:attribute name="owner" type="xsd:string"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="UnlockAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="PromoteVersionAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="DemoteVersionAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType"/>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ApplySecurityTemplateAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="applyStateId" type="GuidType" use="required"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="RaiseEventAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:sequence>
							<xsd:element name="EventProperties" type="ModifiedPropertiesType" minOccurs="0"/>
						</xsd:sequence>
						<xsd:attribute name="classId" type="xsd:string" use="required"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="InstallAddOnAction">
				<xsd:complexContent>
					<xsd:extension base="ActionType">
						<xsd:attribute name="addOnId" type="GuidType" use="required"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
		<!-- ***Localization header*** -->
			<xsd:element name="Localization">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="Locale" type="xsd:string"/>
						<xsd:element name="Timezone" type="xsd:string" minOccurs="0"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
 
		<!-- ***Error reporting*** -->
 
			<xsd:simpleType name="ErrorNameType">
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="SERVER_ERROR"/>
					<xsd:enumeration value="HEAP_FAILURE"/>
					<xsd:enumeration value="DEADLOCK_ERROR"/>
					<xsd:enumeration value="DATABASE_ERROR"/>
					<xsd:enumeration value="DATABASE_FULL"/>
					<xsd:enumeration value="TRANSACTION_TIMEOUT"/>
					<xsd:enumeration value="AUTHENTICATION_FAILURE"/>
					<xsd:enumeration value="NOT_SUPPORTED"/>
					<xsd:enumeration value="BAD_CLASSID"/>
					<xsd:enumeration value="BAD_PROPERTYID"/>
					<xsd:enumeration value="BAD_INDEX"/>
					<xsd:enumeration value="BAD_OBJECT"/>
					<xsd:enumeration value="INVALID_REQUEST"/>
					<xsd:enumeration value="REQUIRED_VALUE_ABSENT"/>
					<xsd:enumeration value="OBJECT_NOT_FOUND"/>
					<xsd:enumeration value="OBJECT_DELETED"/>
					<xsd:enumeration value="BAD_VALUE"/>
					<xsd:enumeration value="DATATYPE_MISMATCH"/>
					<xsd:enumeration value="ACCESS_DENIED"/>
					<xsd:enumeration value="CONSTRAINT_VIOLATED"/>
					<xsd:enumeration value="NOT_UNIQUE"/>
					<xsd:enumeration value="OBJECT_MODIFIED"/>
					<xsd:enumeration value="OBJECT_REFERENCED"/>
					<xsd:enumeration value="OBJECT_REFERENCES_OTHERS"/>
					<xsd:enumeration value="OBJECT_LOCKED"/>
					<xsd:enumeration value="OBJECT_NOT_LOCKED"/>
					<xsd:enumeration value="RESERVATION_EXISTS"/>
				</xsd:restriction>
			</xsd:simpleType>
 
			<xsd:complexType name="DiagnosticType">
				<xsd:simpleContent>
					<xsd:extension base="xsd:string">
						<xsd:attribute name="diagnosticType" type="xsd:string"/>
					</xsd:extension>
				</xsd:simpleContent>
			</xsd:complexType>
 
			<xsd:complexType name="ErrorRecordType">
				<xsd:sequence>
					<xsd:element name="Source" type="xsd:string" minOccurs="0"/>
					<xsd:element name="Description" type="xsd:string" minOccurs="0"/>
					<xsd:element name="Diagnostic" type="DiagnosticType" minOccurs="0" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:complexType>
 
			<xsd:complexType name="ErrorStackType">
				<xsd:sequence>
					<xsd:element name="ErrorName" type="ErrorNameType"/>
					<xsd:element name="ErrorRecord" type="ErrorRecordType" minOccurs="1" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:complexType>
 
			<!-- FaultStackType is the same as ErrorStackType, and it is
			     used only in SOAP faults. It is defined separately in
			     order to allow JAX-RPC compliant toolkits to generate
			     an exception-deriving class for FaultStackType without
			     interfering with the use of ErrorStackType in normal
			     response messages -->
			<xsd:complexType name="FaultStackType">
				<xsd:sequence>
					<xsd:element name="ErrorName" type="ErrorNameType"/>
					<xsd:element name="ErrorRecord" type="ErrorRecordType" minOccurs="1" maxOccurs="unbounded"/>
				</xsd:sequence>
			</xsd:complexType>
 
			<xsd:element name="ErrorStack" type="FaultStackType"/>
 
		<!-- ***Search scope*** -->
 
			<xsd:complexType name="SearchScopeType" abstract="true"/>
 
			<xsd:complexType name="ObjectStoreScope">
				<xsd:complexContent>
					<xsd:extension base="SearchScopeType">
						<xsd:attribute name="objectStore" type="xsd:string" use="required"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="MergedScope">
				<xsd:complexContent>
					<xsd:extension base="SearchScopeType">
						<xsd:sequence>
							<xsd:element name="ComponentScope" type="SearchScopeType" minOccurs="2" maxOccurs="unbounded"/>
						</xsd:sequence>
						<xsd:attribute name="mergeMode">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="Union"/>
									<xsd:enumeration value="Intersection"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
		<!-- *** Search types *** -->
 
			<xsd:simpleType name="RepositorySearchModeType">
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="Rows"/>
					<xsd:enumeration value="Objects"/>
				</xsd:restriction>
			</xsd:simpleType>
 
			<xsd:complexType name="SearchRequestType" abstract="true">
				<xsd:sequence>
					<xsd:element name="SelectionFilter" type="PropertyFilterType" minOccurs="0"/>
				</xsd:sequence>
				<xsd:attribute name="maxElements" type="xsd:int"/>
				<xsd:attribute name="continueFrom" type="xsd:string"/>
				<xsd:attribute name="continuable" type="xsd:boolean"/>
			</xsd:complexType>
 
			<xsd:complexType name="RepositorySearch">
				<xsd:complexContent>
					<xsd:extension base="SearchRequestType">
						<xsd:sequence>
							<xsd:element name="SearchScope" type="SearchScopeType"/>
							<xsd:element name="SearchSQL" type="xsd:string"/>
						</xsd:sequence>
						<xsd:attribute name="repositorySearchMode" type="RepositorySearchModeType"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="PrincipalSearch">
				<xsd:complexContent>
					<xsd:extension base="SearchRequestType">
						<xsd:sequence>
							<xsd:element name="SearchRealm" type="xsd:string"/>
							<xsd:element name="SearchPattern" type="xsd:string"/>
						</xsd:sequence>
						<xsd:attribute name="includeUsers" type="xsd:boolean"/>
						<xsd:attribute name="includeGroups" type="xsd:boolean"/>
						<xsd:attribute name="principalSearchType">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="Custom"/>
									<xsd:enumeration value="PrefixMatch"/>
									<xsd:enumeration value="SuffixMatch"/>
									<xsd:enumeration value="Contains"/>
									<xsd:enumeration value="Exact"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
						<xsd:attribute name="principalSearchAttribute">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="ShortName"/>
									<xsd:enumeration value="DisplayName"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
						<xsd:attribute name="principalSort">
							<xsd:simpleType>
								<xsd:restriction base="xsd:string">
									<xsd:enumeration value="Ascending"/>
									<xsd:enumeration value="Descending"/>
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="StoredSearch">
				<xsd:complexContent>
					<xsd:extension base="SearchRequestType">
						<xsd:sequence>
							<xsd:element name="SearchObject" type="ObjectReference"/>
							<xsd:element name="ExecuteXML">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:any processContents="lax"/>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="repositorySearchMode" type="RepositorySearchModeType"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
		<!-- ***Top level request/response elements*** -->
 
			<xsd:complexType name="ObjectRequestType">
				<xsd:sequence>
					<xsd:element name="SourceSpecification" type="ObjectReference"/>
					<xsd:element name="PropertyFilter" type="PropertyFilterType" minOccurs="0"/>
				</xsd:sequence>
				<xsd:attribute name="id" type="xsd:ID"/>
				<xsd:attribute name="cacheAllowed" type="xsd:boolean"/>
				<xsd:attribute name="maxElements" type="xsd:int"/>
				<xsd:attribute name="continueFrom" type="xsd:string"/>
			</xsd:complexType>
 
			<xsd:element name="GetObjectsRequest">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ObjectRequest" type="ObjectRequestType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
 
			<xsd:complexType name="ObjectResponseType" abstract="true">
				<xsd:attribute name="id" type="xsd:ID"/>
			</xsd:complexType>
 
			<xsd:complexType name="SingleObjectResponse">
				<xsd:complexContent>
					<xsd:extension base="ObjectResponseType">
						<xsd:sequence>
							<xsd:element name="Object" type="ObjectValue"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ObjectSetResponse">
				<xsd:complexContent>
					<xsd:extension base="ObjectResponseType">
						<xsd:sequence>
							<xsd:element name="ObjectSet" type="ObjectSetType"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:complexType name="ErrorStackResponse">
				<xsd:complexContent>
					<xsd:extension base="ObjectResponseType">
						<xsd:sequence>
							<xsd:element name="ErrorStack" type="ErrorStackType"/>
						</xsd:sequence>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:element name="GetObjectsResponse">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ObjectResponse" type="ObjectResponseType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
 
			<xsd:complexType name="ChangeRequestType">
				<xsd:sequence>
					<xsd:element name="TargetSpecification" type="ObjectReference"/>
					<xsd:element name="Action" type="ActionType" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element name="ActionProperties" type="ModifiedPropertiesType" minOccurs="0"/>
					<xsd:element name="RefreshFilter" type="PropertyFilterType" minOccurs="0"/>
				</xsd:sequence>
				<xsd:attribute name="id" type="xsd:ID"/>
				<xsd:attribute name="updateSequenceNumber" type="xsd:int"/>
			</xsd:complexType>
 
			<xsd:element name="ExecuteChangesRequest">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ChangeRequest" type="ChangeRequestType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attribute name="refresh" type="xsd:boolean"/>
				</xsd:complexType>
			</xsd:element>
 
			<xsd:complexType name="ChangeResponseType">
				<xsd:complexContent>
					<xsd:extension base="ObjectValue">
						<xsd:attribute name="id" type="xsd:ID"/>
					</xsd:extension>
				</xsd:complexContent>
			</xsd:complexType>
 
			<xsd:element name="ExecuteChangesResponse">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ChangeResponse" type="ChangeResponseType" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
 
			<xsd:element name="ExecuteSearchRequest" type="SearchRequestType"/>
 
			<xsd:element name="ExecuteSearchResponse" type="ObjectSetType"/>
 
			<xsd:element name="GetSearchMetadataRequest">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="SearchScope" type="SearchScopeType"/>
						<xsd:element name="ClassFilter" type="xsd:string" minOccurs="0"/>
						<xsd:element name="PropertyFilter" type="PropertyFilterType" minOccurs="0"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
 
			<xsd:element name="GetSearchMetadataResponse">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="ObjectSetType">
							<xsd:attribute name="metadataEpochId" type="xsd:string"/>
						</xsd:extension>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
 
		</xsd:schema>
 
	</types>
 
	<message name="LocalizationHeader">
		<part name="header" element="ctyp:Localization"/>
	</message>
 
	<message name="GetObjectsRequest">
		<part name="request" element="ctyp:GetObjectsRequest"/>
	</message>
 
	<message name="GetObjectsResponse">
		<part name="response" element="ctyp:GetObjectsResponse"/>
	</message>
 
	<message name="ExecuteChangesRequest">
		<part name="request" element="ctyp:ExecuteChangesRequest"/>
	</message>
 
	<message name="ExecuteChangesResponse">
		<part name="response" element="ctyp:ExecuteChangesResponse"/>
	</message>
 
	<message name="ExecuteSearchRequest">
		<part name="request" element="ctyp:ExecuteSearchRequest"/>
	</message>
 
	<message name="ExecuteSearchResponse">
		<part name="response" element="ctyp:ExecuteSearchResponse"/>
	</message>
 
	<message name="GetSearchMetadataRequest">
		<part name="request" element="ctyp:GetSearchMetadataRequest"/>
	</message>
 
	<message name="GetSearchMetadataResponse">
		<part name="response" element="ctyp:GetSearchMetadataResponse"/>
	</message>
 
	<message name="FaultResponse">
		<part name="error" element="ctyp:ErrorStack"/>
	</message>
 
	<portType name="FNCEWS35PortType">
		<operation name="GetObjects">
			<input message="cdef:GetObjectsRequest"/>
			<output message="cdef:GetObjectsResponse"/>
			<fault name="GeneralError" message="cdef:FaultResponse"/>
		</operation>
		<operation name="ExecuteChanges">
			<input message="cdef:ExecuteChangesRequest"/>
			<output message="cdef:ExecuteChangesResponse"/>
			<fault name="GeneralError" message="cdef:FaultResponse"/>
		</operation>
		<operation name="ExecuteSearch">
			<input message="cdef:ExecuteSearchRequest"/>
			<output message="cdef:ExecuteSearchResponse"/>
			<fault name="GeneralError" message="cdef:FaultResponse"/>
		</operation>
		<operation name="GetSearchMetadata">
			<input message="cdef:GetSearchMetadataRequest"/>
			<output message="cdef:GetSearchMetadataResponse"/>
			<fault name="GeneralError" message="cdef:FaultResponse"/>
		</operation>
	</portType>
</definitions>
Je suis entrain de tester l'exemple que tu m'as fourni et retournerai l'information par après
Bàt
Maelenkolix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2008, 15h55   #7
Invité de passage
 
Inscription : avril 2008
Messages : 5
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : avril 2008
Messages : 5
Points : 0
Points : 0
Re-
pour info, j'avais déjà passé les paramètres via un tableau mais cela reviens au même.
J'ai fais d'autres tests selon la description de la méthode mais le résultat est identique.

Code :
1
2
3
4
5
6
//tableau de username
$auth = array( "Username" => $username,"Password" => $password);
...
$authvalues = new SoapVar($auth, SOAP_ENC_OBJECT);
....
$headerSOAP =  new SoapHeader("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UserNameToken",$authvalues, false);

Par contre dans le fichier wsdl on peut constater ceci :
et j'ai pu constater dans un livre que j'ai lu qu'il existe une implementation de la classe Localization pour les soapheader.
<!-- ***Localization header*** -->
<xsd:element name="Localization">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Locale" type="xsd:string"/>
<xsd:element name="Timezone" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

j'ai testé un appel de ce style :

Code :
1
2
 
$headerSOAP =  new SoapHeader("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UserNameToken",$authvalues, "en-US");
De cet appel j'obtiens ce message, d'erreur :
Citation:
REQUEST: exeption soapheader : SoapFault exception: [SOAP-ENV:MustUnderstand] Cannot find Header Processor for mandatory header
Suis je sur la bonne voie????
Maelenkolix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2008, 16h26   #8
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2004
Messages : 319
Points : 325
Points : 325
Désolé je ne sais pas du tout
Mais ca me parait bizarre tout de même que l'authentification dépende de la localisation.
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2009, 08h55   #9
Nouveau Membre du Club
 
Inscription : avril 2002
Messages : 44
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 44
Points : 25
Points : 25
As-tu essayé d'utiliser TCPMon afin de vérifier la tête de ton message SOAP ?
Tu pourras ainsi vérifier que ton SOAPHeader est correctement fabriqué.
__________________
www.ferraridefrance.com - www.autoccaz.com
DELPHI 4-5-6-7, PHP 4, VB 4-5-6, J2EE, ADA, C++, SIEBEL 7, COBOL... DB2 OS/390, Access...
mixi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h57.


 
 
 
 
Partenaires

Hébergement Web