Como puedo poner un(os) parametros opcionales en un metodo de un web service

07/09/2006 - 00:44 por Gustavo | Informe spam
Hola Grupo
Alguno de uds. me podria decir como, si es que se puede, para poner
un(os) parametros opcionales en un metodo de un web service

Por ejemplo :
<WebMethod()> _
Public Function GetPedidoPorSICLO(ByVal prmPedidoSICLO As Integer,
Optional ByVal prmOrigen As String = "") As System.Xml.XmlDocument
'
'Codigo
'
'
End Function

Y al momento de llamarlo en mi aplicacion de VB ó ASPX, poner los dos
parametros para realizar la busqueda, o solamente el primero, por que
el primero no sería opcional.

De antemano... Mil Gracias

Saludos

Gustavo Guerra V.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
07/09/2006 - 09:41 | Informe spam
"Gustavo" wrote in message
news:
Hola Grupo
Alguno de uds. me podria decir como, si es que se puede, para poner
un(os) parametros opcionales en un metodo de un web service

Por ejemplo :
<WebMethod()> _
Public Function GetPedidoPorSICLO(ByVal prmPedidoSICLO As Integer,
Optional ByVal prmOrigen As String = "") As System.Xml.XmlDocument



El protocolo de los servicios web no permite parámetros opcionales.
Tienes varias alternativas:

1) Definir dos funciones distintas, una con un parámetro y otra con los
dos. Por cierto, no pueden ser dos sobrecargas de la misma función, ya que
el servicio web tampoco admite esto. Las dos funciones tienen que tener dos
nombres distintos.

2) En lugar de pasar dos parámetros, pasar uno solo que sea un objeto de
una clase que previamente has definido y que contiene dentro los dos
parámetros que necesitas. Esto te permitiría perfectamente crear una
instancia de dicha clase y asignarle solo uno de los dos parámetros.

3) Hacer que el parámetro no sea opcional en el servicio web, y
convertirlo en opcional en la parte cliente añadiendo una función para ese
propósito. Si estás usando Visual Studio 2005, hay una forma elegante de
hacerlo que consiste en usar un "Partial Class" con el mismo espacio de
nombres y nombre de clase que el proxy autogenerado, y añadirlo a tu
proyecto. En el partial class pones la función con el argumento opcional, y
haces que dicha función llame a la función del servicio web tras asignar el
valor predeterminado a dicho argumento.
Respuesta Responder a este mensaje
#2 Gustavo
07/09/2006 - 19:23 | Informe spam
Alberto Poblacion wrote:
"Gustavo" wrote in message
news:
Hola Grupo
> Alguno de uds. me podria decir como, si es que se puede, para poner
> un(os) parametros opcionales en un metodo de un web service
>
> Por ejemplo :
> <WebMethod()> _
> Public Function GetPedidoPorSICLO(ByVal prmPedidoSICLO As Integer,
> Optional ByVal prmOrigen As String = "") As System.Xml.XmlDocument

El protocolo de los servicios web no permite parámetros opcionales.
Tienes varias alternativas:

1) Definir dos funciones distintas, una con un parámetro y otra con los
dos. Por cierto, no pueden ser dos sobrecargas de la misma función, ya que
el servicio web tampoco admite esto. Las dos funciones tienen que tener dos
nombres distintos.

2) En lugar de pasar dos parámetros, pasar uno solo que sea un objeto de
una clase que previamente has definido y que contiene dentro los dos
parámetros que necesitas. Esto te permitiría perfectamente crear una
instancia de dicha clase y asignarle solo uno de los dos parámetros.

3) Hacer que el parámetro no sea opcional en el servicio web, y
convertirlo en opcional en la parte cliente añadiendo una función para ese
propósito. Si estás usando Visual Studio 2005, hay una forma elegante de
hacerlo que consiste en usar un "Partial Class" con el mismo espacio de
nombres y nombre de clase que el proxy autogenerado, y añadirlo a tu
proyecto. En el partial class pones la función con el argumento opcional, y
haces que dicha función llame a la función del servicio web tras asignar el
valor predeterminado a dicho argumento.



Gracias por tu respuesta, así lo hice, y funcionó muy bien, estoy
usando .NET 2003, pero aunque no use el Partial Class si cree varios
Web Methods que reciben diferentes parámetros, y como agregué mas
parámetros al proceso, tuve que crear varios webmethods y para no
repetir tanto código, cree una función privada, y ahí si me
permitió poner parámetros opcionales, y esa función privada la mando
llamar desde cada uno de los webmethods...
De nuevo... Muchas Gracias.. :D
Saludos
Gustavo Guerra
Respuesta Responder a este mensaje
#3 Gustavo
07/09/2006 - 19:34 | Informe spam
Gustavo wrote:
Alberto Poblacion wrote:
> "Gustavo" wrote in message
> news:
> Hola Grupo
> > Alguno de uds. me podria decir como, si es que se puede, para poner
> > un(os) parametros opcionales en un metodo de un web service
> >
> > Por ejemplo :
> > <WebMethod()> _
> > Public Function GetPedidoPorSICLO(ByVal prmPedidoSICLO As Integer,
> > Optional ByVal prmOrigen As String = "") As System.Xml.XmlDocument
>
> El protocolo de los servicios web no permite parámetros opcionales.
> Tienes varias alternativas:
>
> 1) Definir dos funciones distintas, una con un parámetro y otra con los
> dos. Por cierto, no pueden ser dos sobrecargas de la misma función, ya que
> el servicio web tampoco admite esto. Las dos funciones tienen que tener dos
> nombres distintos.
>
> 2) En lugar de pasar dos parámetros, pasar uno solo que sea un objeto de
> una clase que previamente has definido y que contiene dentro los dos
> parámetros que necesitas. Esto te permitiría perfectamente crear una
> instancia de dicha clase y asignarle solo uno de los dos parámetros.
>
> 3) Hacer que el parámetro no sea opcional en el servicio web, y
> convertirlo en opcional en la parte cliente añadiendo una función para ese
> propósito. Si estás usando Visual Studio 2005, hay una forma elegante de
> hacerlo que consiste en usar un "Partial Class" con el mismo espacio de
> nombres y nombre de clase que el proxy autogenerado, y añadirlo a tu
> proyecto. En el partial class pones la función con el argumento opcional, y
> haces que dicha función llame a la función del servicio web tras asignar el
> valor predeterminado a dicho argumento.

Gracias por tu respuesta, así lo hice, y funcionó muy bien, estoy
usando .NET 2003, pero aunque no use el Partial Class si cree varios
Web Methods que reciben diferentes parámetros, y como agregué mas
parámetros al proceso, tuve que crear varios webmethods y para no
repetir tanto código, cree una función privada, y ahí si me
permitió poner parámetros opcionales, y esa función privada la mando
llamar desde cada uno de los webmethods...
De nuevo... Muchas Gracias.. :D
Saludos
Gustavo Guerra



P.D. Olvide comentar que aunque los nombres de los WebMethods si los
puse iguales, lo que tuve que poner diferente es el parámetro
"MessageName" de cada WebMethod.
Gracias de nuevo.

Saludos

Gustavo Guerra
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida