Bonjour,
- ce post fait référence au post résolu de vern's web services - pb de communication serveur/client -
Moi aussi je rencontre le même genre de problème , j'ai besoin de passer en parametre une classe non scalaire lors d'un appel de fonction d'un client vers un serveur web via HTTPRIO.
Elle est déclarée en TRemotable côté client (suite à l'import du WSDL) mais comme elle n'a pas été crée en Delphi (en C++) côté server je ne sais pas si elle a été crée en équivalent.
Par contre j'arrive à executer la requête Subscribe avec le petit soft WebServiceStudio qui pointe vers le même WSDL.
Voici le code cote client :
Ceci me renvoi comme message : 'Apres Subscribe Error Parametre requis non spécifié Subscriber '
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 procedure TForm1.Button1Click(Sender: TObject); var srResult:TSubscribeResult; sFilter : String; iuri:WideString; itypename:WideString; begin // création de l'objet non scalaire Subscriber srSubscriber := Subscriber.Create() ; srSubscriber.ConsumerPort := 0 ; srSubscriber.ConsumerHost := 'a'; srSubscriber.Identifier := '1111' ; sFilter := 'filtre scaliare'; // création de l'objet résultat de l'appel srResult := TSubscribeResult.Create; srResult.ResultStatus := TResultStatus.create; // récup des infos de registration de la classe Subscriber RemClassRegistry.GetXSDInfoForClass(TypeInfo(Subscriber),iuri, itypename ) ; ShowMessage('Subscriber ' + iuri + ' : ' + itypename ) ; srResult := (HTTPRIOOperationSubscriptionService2008 as OperationSubscriptionService2008Soap).Subscribe( (srSubscriber as Subscriber), sFilter); ShowMessage('Apres Subscribe ' + GetResultLevel(srResult.ResultStatus.Level) + srResult.ResultStatus.Message ) ; end;
alors que GetXSDInfoForClass m'a renvoyé les infos sur l'uri et le typename correspondant au RegisterXSClass importé du WSDL
J'ai le même message d'erreur si je ne fait pas le Create de mon Subscriber.
Serait il possible qu'il y ait incompatbilité entre la déclaration (en Delphi) côté client et celle en C++ côté server (qui serait traitée par WebServiceStudio)
et dans ce cas comment le résoudre
merci pour votre aide ...
PS : il est quand même étonnant que j'arrive à récupérer le message d'erreur avec sa structure
suite import wsdl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 initialization InvRegistry.RegisterInterface(TypeInfo(OperationSubscriptionService2008Soap), 'http://www.giro.ca/OperationSubscriptionService2008', 'utf-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(OperationSubscriptionService2008Soap), '/OperationSubscriptionService2008/%operationName%'); RemClassRegistry.RegisterXSClass(Subscriber, 'http://www.giro.ca/OperationSubscriptionService2008', 'Subscriber'); RemClassRegistry.RegisterXSClass(SubscribeResult, 'http://www.giro.ca/OperationSubscriptionService2008', 'SubscribeResult','',false);
Partager