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 :
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;
Ceci me renvoi comme message : 'Apres Subscribe Error Parametre requis non spécifié Subscriber '
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);