ASP.NET - Web Service que retorna varias variables

 
Vista:

Web Service que retorna varias variables

Publicado por Hubert Casimiro (10 intervenciones) el 30/10/2009 02:20:28
Hola Grupo
Tengo esta urgencia.
De qué forma creó un Web Service de tal forma que este reciba los parámetros (valor1, valor2, valor3, valor4, valor5, valor6, valor7, valor8…) tal que con los 2 primeros realice se realice un proceso que almacene valor a los otros y que luego esos sean devueltos.
valor1=”aa”
valor2=”bb”
valor3=””
valor4=””
valor5=””
valor6=””
Y luego de consumir el método este devuelva variables llenas a partir del tercero.
valor3=”Hola1”
valor4=” Hola2”
valor5=” Hola3”
valor6=” Hola4”
Como si el servicio recibiera los parámetros por referencia.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:Web Service que retorna varias variables

Publicado por roger (311 intervenciones) el 30/10/2009 04:40:15
el webservice devuelve valores unicos, lo que puedes hacer es concatenar el resultado que va a retornar y separar cada valor por algun caracter como ";" o "|". En el cliente recuperas el resultado dividiendolo por el caracter usado y almacenandolo en un arreglo de strings.
Ejemplo
string[] valores = cadenaResultado.Split('|');

string valor1 = valores[0];
string valor2 = valores[1];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Web Service que retorna varias variables

Publicado por Khristian (335 intervenciones) el 30/10/2009 16:13:23
Haz una clase.... mejor


dim c as new claseA(valor1, valor2)
c.calcular()
c.valor1
c.valor2
c.valor3
c.valor4
c=nothing

Si deduces... la clase tendria 4 atributos (variables publicas)
las 2 primeras representan los parametros de entrada.
Podrias inicializar la clase con 2 paramentros de entrada, o no.
Despues en el metodo calcular, podrias tambien pasar los parametros, pero si ya los has pasado, se omite.
lo importante es que antes de cerrar la clase, debes acceder a los demas datos.
Supongamos que valor3 será valor1 x 2
y que valor4 sera valor 2 x 3

Simple...

Lo otro es que devuelvas una estructura, del tipo

dato.valor1
dato.valor2
dato.valor3
dato.valor4


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Web Service que retorna varias variables

Publicado por Hubert Casimiro (10 intervenciones) el 30/10/2009 17:52:34
Hola,
Debo indicar que el Servicio lo consumo desde Visual Fox y no se en qué está desarrollado el servicio.
El Servicio lo publico un cliente que está en otro pais y cuando estuve en ese pais lo consumia de esta forma. Quiero desarrollar el equivalente en nuestras oficinas.

XService.obDts(lcTarjeta, @Cuenta, @Apellidos, @Nombres, @FechaN, @ErrorD )
Como vez al web service le paso 6 parametros pero solo el primero tiene un valor, luego de ejecutar el servicio este carga los 5 últimas variables.

El ?SWDL del XML del servicio es el siguiente (si puede servir en algo).

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="obDts">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Tarjeta" type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="Cuenta" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Apellidos" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nombres" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FechaN" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ErrorD" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="obDtsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Cuenta" type="s:int" />
<s:element minOccurs="0" maxOccurs="1" name="Apellidos" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="Nombres" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="FechaN" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="ErrorD" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="obDtsSoapIn">
<wsdl:part name="parameters" element="tns:obDts" />
</wsdl:message>
<wsdl:message name="obDtsSoapOut">
<wsdl:part name="parameters" element="tns:obDtsResponse" />
</wsdl:message>
<wsdl:portType name="wsFilaSoap">
<wsdl:operation name="obDts">
<wsdl:input message="tns:obDtsSoapIn" />
<wsdl:output message="tns:obDtsSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="wsFilaSoap" type="tns:wsFilaSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="obDts">
<soap:operation soapAction="http://tempuri.org/obDts" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="wsFilaSoap12" type="tns:wsFilaSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="obDts">
<soap12:operation soapAction="http://tempuri.org/obDts" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="wsFila">
<wsdl:port name="wsFilaSoap" binding="tns:wsFilaSoap">
<soap:address location="http://localhost/wsFila/wsFila.asmx" />
</wsdl:port>
<wsdl:port name="wsFilaSoap12" binding="tns:wsFilaSoap12">
<soap12:address location="http://localhost/wsFila/wsFila.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Web Service que retorna varias variables

Publicado por roger (311 intervenciones) el 31/10/2009 12:34:25
Puedes pasar los parametros de salida por referencia y la respuesta del web servicio incluira el tag correspondiente al parametro de salida, no lo he probado pero acá indican como hacerlo http://www.codeproject.com/KB/XML/RefAndOL.aspx
; pero como te dije anteriormente tambien se puede hacer, en fox recuerdo las funciones getWordNum y getWordCount que te sirven para retomar los valores en una posicion separados por algun caracter.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SOLUCIONADO

Publicado por Hubert Casimiro (10 intervenciones) el 11/11/2009 15:31:07
En este URL esta la solución.
http://www.codeproject.com/KB/XML/RefAndOL.aspx

Aqui hay un ejemplo de un "Web Service" que trabaje utilizando parametros "por valor" y "por referencia".

Era lo que estaba buscando.

Saludos Grupo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar