J'ai une application de savon créée avec Delphi.
L'entrée vient au serveur correct. Mais la sortie est toujours vide. Interface: STROND> P> r code> objet (réponse) créé, mais
longueur (notes) code> Toujours 0. Si je fais une application sans tableaux, cela fonctionne également correctement. Où est le problème? 3 jours de googling et d'essayer différentes combinatios n'a pas aidé. P>
c:=tclientinformationstructure.Create;
try
c.ClientApplicationName:=labelededit1.Text;
c.ClientApplicationPassword:=labelededit2.Text;
c.RequestIdentifier:=labelededit3.Text;
c.StartSequenceNumber:=strtointdef(labelededit4.Text,0);
c.NumberOfNotes:=strtointdef(labelededit5.Text,0);
r:=(HTTPRIO1 as ibla).GetNotes(c);
if assigned(r) then
if length(r.notes)>0 then
if assigned(r.notes[0]) then showmessage(r.notes[0].AuthorUserName);
finally
freeandnil(c);
if assigned (r.notes[0]) then freeandnil(r.notes[0]);
if assigned(r) then freeandnil(r);
end;
3 Réponses :
Utilisez SOAPUI pour envoyer une demande et voir si quelque chose est dans la réponse. Travailler avec des objets est pratique, mais vous devez parfois descendre au niveau inférieur et voir le XML qui est en train d'être envoyé. Soapui est votre ami ici. P>
Chris, merci pour la réponse. J'ai installé Soapui. J'ai eu la réponse
sur le serveur, pour accéder au module Web SOAP, sélectionnez le composant httpsoappascalinvoker et ouvrez la propriété Options dans l'inspecteur d'objets. Assurez-vous que l'option "sorotrefnodestobody" est cochée. Cela garantira que dans la résonance du savon, les éléments sont passés à l'extérieur du nœud de réponse, dans le corps, où le client peut les trouver. P>
groetjes, bob Swart p>
Merci à tous. Tous fonctionne bien avec ce code:
procedure TForm1.BitBtn1Click(Sender: TObject);
var c:tclientinformationstructure;
r:tNoteCollection;
begin
c:=tclientinformationstructure.Create;
try
c.ClientApplicationName:=labelededit1.Text;
c.ClientApplicationPassword:=labelededit2.Text;
c.RequestIdentifier:=labelededit3.Text;
c.StartSequenceNumber:=strtointdef(labelededit4.Text,0);
c.NumberOfNotes:=strtointdef(labelededit5.Text,0);
r:=nil;
r:=(HTTPRIO1 as iCIS2Opus).GetNotes(c);
if r.getlen>0 then
if assigned(r.notes[0]) then showmessage(r.notes[0].AuthorUserName);
finally
if assigned(c) then freeandnil(c);
if assigned(r) then freeandnil(r);
end;
end;
Ne nous rendez pas à jouer sur place-les-différences. Expliquez quelles pièces que vous deviez changer pour faire fonctionner votre programme.
Cette note montre exactement le changement. Voir la manière dont la matrice a été déclarée dans la partie d'interface et mis en œuvre la méthode pour ajouter des éléments
Résultat: = tnotecollection.create code> mais qui le réalise? Est-il détruit après l'appel parce que c'est une trémotable?
Point mineur: Le chèque attribué n'est pas requis pour FreeAndnil, car il vérifie clairement explicitement pour voir si l'objet est nul avant d'appeler Détruire.
Essayez
registerSerializOPtions code> comme décrit dans cette Réponse a>.
Tondrej: fait, n'a pas aidé. Essayé de faire un type de tableau n'est pas une propriété mais un résultat de la fonction. Dans ce cas, le client a obtenu une matrice de droite, avec des objets créés, mais tous les champs de l'objet étaient vides ou 0.
Et la réponse est comme ceci: < / GetNotesResponse> savon-env: Corps> Code>