Cómo usar un WSDL

126

Necesito consumir un servicio web. Me enviaron el archivo WSDL. ¿Qué debo hacer para agregarlo a mi sitio web y comenzar a usarlo como proxy? (Si lo pongo en un directorio virtual, se puede descubrir, pero ¿me garantiza la conexión con el servicio web real?)

jmayor
fuente
9
Bueno, voté porque es una pregunta que creo que otros usuarios aquí se beneficiarían al ver una respuesta. Estaba buscando este problema exacto y estoy feliz de haberlo encontrado aquí.
schizoid04

Respuestas:

138

Encendería Visual Studio, crearía un proyecto web (o aplicación de consola, no importa).

Para .Net Standard:

  1. Me gustaría hacer clic derecho en el proyecto y elegir "Agregar referencia de servicio" en el menú contextual Agregar .
  2. Haría clic en Avanzado y luego en Agregar referencia de servicio.
  3. Obtendría la ruta completa del archivo de wsdl y la pegaría en la barra de direcciones. Luego dispara la Flecha (botón Ir).
  4. Si hay un error al intentar cargar el archivo, entonces debe haber una url rota y sin resolver que el archivo debe resolver como se muestra a continuación: ingrese la descripción de la imagen aquí Consulte esta respuesta para obtener información sobre cómo solucionarlo: Respuesta de Stackoverflow a: No se puede crear una referencia de servicio para archivo wsdl

Si no hay ningún error, simplemente debe configurar el NameSpace que desea usar para acceder al servicio y se generará por usted.

Para .Net Core

  1. Haría clic derecho en el proyecto y elegiría Connected Service en el menú contextual Agregar.
  2. Seleccionaría el proveedor de referencia del servicio web WCF de Microsoft de la lista.
  3. Presionaría buscar y seleccionar el archivo wsdl de inmediato, establecer el espacio de nombres y estoy listo para comenzar. Consulte la url de corrección de errores anterior si encuentra algún error.

Cualquiera de los métodos anteriores generará un cliente WCF simple y muy básico para su uso. Debería encontrar una clase "YourservicenameClient" en el código generado.

Para fines de referencia, el archivo cs generado se puede encontrar en su Obj / debug (o release) / XsdGeneratedCode y aún puede encontrar los dlls en la carpeta TempPE.

Los Servicios creados deben tener métodos para cada uno de los métodos definidos en el contrato WSDL.

Cree una instancia del cliente y llame a los métodos que desea llamar, ¡eso es todo!

YourServiceClient client = new YourServiceClient();
client.SayHello("World!");

Si necesita especificar la URL remota (sin usar la creada de forma predeterminada), puede hacerlo fácilmente en el constructor del cliente proxy:

YourServiceClient client = new YourServiceClient("configName", "remoteURL");

donde configNamees el nombre del punto final a usar (usará todas las configuraciones excepto la URL), y remoteURLes una cadena que representa la URL a la que conectarse (en lugar de la que figura en la configuración).

marc_s
fuente
Esto funciona bien Solo una pregunta, si tengo el archivo wsdl en mi máquina, y agrego la referencia a este archivo. Al ejecutar la URL que golpea, ¿es la que aloja el servicio web, o debo especificar el enlace y el punto final?
jmayor
1
Depende de usted: de forma predeterminada, el código creado para el proxy del cliente tendrá la URL que se encuentra dentro del WSDL; si necesita ir a otra URL, debe especificarlo usted mismo.
marc_s
¿Por qué es esto tan fácil? ¿No hay una trampa? : p Gracias!
Odys
1
Como respuesta aceptada, sería bueno que también mencionaras cómo usar un WSDL alojado en la web desde una URL.
Caltor
Creo que estoy bastante cerca de hacer que esto funcione. Tengo el servicio web instalado usando la herramienta Agregar referencia de servicio. Puedo crear instancias del cliente, pero llamar a los métodos es donde fallo. El punto final es usar una implementación de Java, y todo lo que puedo ver es el XML. El método que intento llamar es buscar un ID de cliente y "otra cosa". Ese algo más es una clase. Lo cual es desconcertante. Puedo poner esto en una publicación a continuación si eso ayudaría, pero estoy desconcertado.
mappingman
45

En estudio visual.

  • Crea o abre un proyecto.
  • Haga clic con el botón derecho en el proyecto desde el explorador de soluciones.
  • Seleccione "Agregar referencia de servicio"
  • Pegue la dirección con WSDL que recibió.
  • Haga clic en Aceptar.

Si no hay errores, debería poder ver la referencia del servicio en el navegador de objetos y todos los métodos relacionados.

vidalsasoon
fuente
9
<3 Visual Studio .. Sí, es así de simple :)
CWAP
3
El OP no tiene una dirección sino un archivo.
Henk Holterman
1
El proveedor del servicio web puede haber deshabilitado WSDL (seguridad por oscuridad), por lo que no hay una URL donde se pueda acceder a WSDL y luego agregar una referencia web en VS no funcionará. Sin embargo, el proveedor quiere que USTED (me refiero a OP) sepa todo lo que necesita saber sobre el contrato de servicio, por eso enviaron el archivo WSDL. Ahora el OP necesita generar el código proxy a partir de él, la pregunta es cómo.
azheglov
3
Al escribir la ruta al archivo. ¿Qué te hace pensar que eso no funciona?
John Saunders
1
Hola @vidalsasoon. ¿Podría explicar brevemente cómo hago para usar estas clases que veo en mi explorador de clases? ?
CalZone
16

Use la utilidad WSDL.EXE para generar un proxy de servicio web desde WSDL.

Obtendrá un archivo fuente C # largo que contiene una clase que se ve así:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MyService", Namespace="http://myservice.com/myservice")]
public partial class MyService : System.Web.Services.Protocols.SoapHttpClientProtocol {
    ...
}

En su lado del cliente, código que consume servicios web:

  1. instanciar MyService.
  2. establecer su propiedad Url
  3. invocar métodos web
azheglov
fuente
55
Esto crea un "viejo estilo" ASMX servicio web - esas son obsoletos - uno debe utilizar WCF lugar hoy en día
marc_s
7

Si desea agregar referencia wsdl en el proyecto .Net Core , no existe la opción "Agregar referencia web".

Para agregar la referencia wsdl, vaya al Explorador de soluciones, haga clic con el botón derecho en el elemento del proyecto Referencias y luego haga clic en la opción Agregar servicio conectado .

ingrese la descripción de la imagen aquí

Luego haga clic en 'Referencia de servicio web de Microsoft WCF':

ingrese la descripción de la imagen aquí

Ingrese la ruta del archivo en el cuadro de texto URI e importe el WSDL:

ingrese la descripción de la imagen aquí

Generará un cliente WCF simple y muy básico y usted lo usará de la siguiente manera:

YourServiceClient client = new YourServiceClient();
client.DoSomething();
Nedzad G
fuente
Esta extensión no me parece.
Rafael Pizao hace