<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Para importar datos desde un servidor distante a JMP, debo llamar a un servicio web SOAP utilizando JSL.
Al tratar con los servicios web de RestFul, solía hacerlo con sockets, pasando parámetros de mi solicitud en el URI. Pero en realidad, no sé cómo hacerlo con el servicio web SOA, ya que tengo un XML para enviar al servidor. Ni siquiera sé por dónde empezar.
Así que, por favor, si alguien pudiera ayudarme a compartir una sugerencia o un truco sobre cómo usar el servicio web SOAP con el lenguaje de script JMP, realmente lo apreciaría.
Mejores saludos,
No estoy familiarizado con los servicios web SOAP, más allá de una búsqueda rápida en Google ... ¿Alguien más?
Parece que hay XML que envía al servidor y XML que recibe del servidor. Creo que ambos se harán con las tomas con las que ya está familiarizado. La composición de un archivo XML para enviar al servidor significa que usted crea una cadena JSL con todas las etiquetas de inicio de XML, debidamente equilibrada con las etiquetas de final. Le sugiero que escriba sus propias funciones de usuario de JSL para ayudar a construir el XML que envía al servidor. El índice de secuencias de comandos contiene un ejemplo de la función JSL ParseXML que puede utilizar para manejar los archivos recibidos del servidor.
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() ) ) ) ) )
);
Observe que la función makeTable está balanceada porque tiene la ... y solo llama a otra función, makeColumn, que también está balanceada porque tiene la ... etiquetas. Es posible que necesites un anidamiento más profundo para SOAP; Agregue más funciones y manténgalas equilibradas con las etiquetas de inicio y fin.
La función Parse XML tiene varias cláusulas OnElement para especificar JSL para ejecutar para manejar las diversas etiquetas XML. El trabajo duro será averiguar qué etiquetas de OnElement necesita y qué hacer con ellas. Parse XML es un marco que entiende cómo se anidan las etiquetas XML; Usted completa los detalles de las etiquetas (elementos).
Este esquema XML se creó solo para admitir este ejemplo. No representa ningún tipo de estándar (como lo hace SOAP).

Documento de Microsoft: Entendiendo el jabón