<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo allerseits,
Um Daten von einem entfernten Server in JMP zu importieren, muss ich einen SOAP-Webdienst über JSL aufrufen.
Beim Umgang mit RestFul-Webdiensten habe ich das mit Sockets gemacht und Parameter meiner Anfrage in den URI übergeben. Tatsächlich weiß ich aber nicht, wie ich mit SOA-Webdiensten umgehen soll, da ich eine XML-Datei zum Senden an den Server habe. Ich weiß nicht einmal, wo ich anfangen soll.
Wenn mir jemand helfen könnte, Tipps oder Tricks zur Verwendung des SOAP-Webdienstes mit JMP-Skriptsprache zu geben, wäre ich sehr dankbar.
Beste Grüße
Nicht vertraut mit SOAP-Webdiensten, außer einer schnellen Google-Suche ... Jemand anderes?
Es hört sich so an, als ob Sie XML an den Server senden und XML vom Server empfangen. Ich denke, beide werden mit den Buchsen erledigt, mit denen Sie bereits vertraut sind. Wenn Sie eine XML-Datei erstellen, die an den Server gesendet werden soll, erstellen Sie eine JSL-Zeichenfolge mit allen XML-Start-Tags, die ordnungsgemäß mit End-Tags abgeglichen sind. Ich würde vorschlagen, eigene JSL-Benutzerfunktionen zu schreiben, um das XML zu erstellen, das Sie an den Server senden. Der Skriptindex enthält ein Beispiel für die JSL ParseXML-Funktion, mit der Sie vom Server empfangene Dateien verarbeiten können.
makeTable = Function( {name, colnames, colmatrix}, {icol, result = ""},
result = result || "";
For( icol = 1, icol <= N Items( colnames ), icol++,
result = result || makeColumn( colnames[icol], colmatrix[0, icol] ); // 0 means all rows for column i
);
result = result || "";
);
makeColumn = Function( {name, data}, {irow, result = ""},
result = result || ""; // start tag
result = result || "["; // start bracket (not XML, this is within the XML tag)
For( irow = 1, irow <= N Rows( data ), irow++,
result = result || Char( data[irow] ) || " "
);
result = result || "]"; // matching end bracket
result = result || ""; // matching end tag
result; // return the string for this column
);
ex = makeTable( "Flintstone", {"Fred", "Wilma", "Pebbles"}, [1 2 3, 11 12 13, 111 112 113, 99 99 99] );
// above this line: sample JSL for creating an XML string to send to a server. THIS IS NOT SOAP, just
// an example of a way to make balanced XML tags.
// below this line, an example of a way to parse data received from a server. Not SOAP. I'm just
// passing the XML string built above as a demo.
// example taken from scripting index...parses TABLE and COL tags
Parse XML( ex,
On Element( "table", Start Tag( New Table( XML Attr( "name" ) ) ) ),
On Element( "col", End Tag( New Column( XML Attr( "name" ), Set Values( Parse( XML Text() ) ) ) ) )
);
Beachten Sie, dass die makeTable-Funktion ausgeglichen ist, da sie die
... enthält. markiert und ruft nur eine andere Funktion auf, makeColumn, die ebenfalls ausgeglichen ist, weil sie die ... -Tags Möglicherweise benötigen Sie eine tiefere Verschachtelung für SOAP. Fügen Sie weitere Funktionen hinzu und halten Sie sie mit Start- und End-Tags im Gleichgewicht.Die Parse XML-Funktion verfügt über mehrere OnElement-Klauseln, mit denen JSL angegeben wird, die zur Verarbeitung der verschiedenen XML-Tags ausgeführt werden sollen. Die harte Arbeit wird darin bestehen, herauszufinden, welche OnElement-Tags Sie benötigen und was Sie damit tun müssen. Das Analysieren von XML ist ein Framework, das versteht, wie die XML-Tags verschachtelt sind. Sie geben die Details für die Tags (Elemente) ein.Dieses XML-Schema wurde speziell zur Unterstützung dieses Beispiels erstellt. Es stellt keinen Standard dar (wie SOAP).Microsoft Dokument: SOAP verstehen