** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - usar servicio web con soap desde acces 20
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradousar servicio web con soap desde acces 20

 Responder Responder
Autor
Mensaje
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Tema: usar servicio web con soap desde acces 20
    Enviado: 31/Agosto/2011 a las 14:42
hola a todos requiero de nuevo de su apoyo

alguien a usado un servicio web con soap desde access lo que necesito es consultar datos de articulos pero aun no tengo idea de como hacerlo en access vi un ejemplo en vb6 desde la pagina del guille

ojala alguien haya trabajado de esta forma y pueda hecharme la mano

gracias y saludos
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 07/Septiembre/2011 a las 23:26
Hola a todos al parecer nadie a trabajado de esta forma , bueno solo encontre un post de Soraya con el siguiente codigo :

Function PruebaServicioWeb()
On Error GoTo Err_PruebaServicioWeb
Dim MiSoapWS As New SoapClient30
   
    Debug.Print MiSoapWS.Saludar()
    Debug.Print MiSoapWS.Saludo("caracola")
    Set MiSoapWS = Nothing
 
Salir:
    Exit Function
Err_PruebaServicioWeb:
    Beep
    MsgBox Err.Description
    Resume Salir
End Function



basicamente lo que quiero lograr es atravez de un cuadro de texto donde coloque el codigo de un producto que tiene el proveedor en su web, me muestre los campos que necesito, este es el xml que el proveedor me dio.

Se agrega la dirección WSDL:
http://200.52.87.135:8081/ServidorDCWS/DatosArticulo?WSDL
y la dirección del esquema:
http://200.52.87.135:8081/ServidorDCWS/DatosArticulo?xsd=1

Ejemplo del XML de solicitud:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body xmlns:wc="http://dcm.com.mx.ServidorWS/" >
<wc:obtenerDatosIdArticulo>
<EncabezadoTransaccion>
<contrasena>con</contrasena>
<usuario>usu</usuario>
</EncabezadoTransaccion>
<Articulo>92274A</Articulo> /*Numero de parte de DCM o del Fabricante*/
</wc:obtenerDatosIdArticulo>
</soapenv:Body>
</soapenv:Envelope>

Ejemplo del XML de respuesta
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:obtenerDatosIdArticuloResponse xmlns:ns2="http://dcm.com.mx.ServidorWS/">
<Articulo>
<descripcion>Cartucho Toner Para Impresora Laser 1 H.P. LaserJet S.4L,4ML,4P,4MP</descripcion>
<descuento>44.5</descuento>
<disponible>60</disponible>
<esPromocion>N</esPromocion>
<fechaFinPromocion/>
<fechaIniPromocion/>
<moneda>PESOS</moneda>
<noArticulo>HP-TO-4L</noArticulo>
<noParteFabricante>92274A</noParteFabricante>
<precioFinal>1416.29</precioFinal>
<precioLista>2551.88</precioLista>
<tipoCambio>11.85</tipoCambio>
</Articulo>
</ns2:obtenerDatosIdArticuloResponse>
</S:Body>
</S:Envelope>

Realmente he buscado en todos los lados y no he encontrada al respecto de como tratar el xml desde VBA para lograr esta comunicacion entre un servicio web y access 2007.

encontre solo estas ligas que pueden ser de utilidad:

LIGA 1

LIGA 2

LIGA 3

Ojala alguien me pueda hechar una mano con esto.

De antemano muchas gracias

Saludos



Editado por maya85 - 08/Septiembre/2011 a las 00:33
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
Tikimore Ver desplegable
Moderador
Moderador


Unido: 02/Enero/2008
Localización: España
Estado: Sin conexión
Puntos: 1519
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 11:17
Hola.
Yo uso SOAP con Access 2007 para conectarme a un servicio web y enviar datos y recibir respuestas.
 
¿Que necesitas en concreto?
 
Un saludo.
 
 
Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 16:25
Muchas gracias Tikimore realmente lo que necesito es checar los datos de articulos asi como hacer pedidos desde access y que se vean reflejados en la web del proveedor. este ya me dio los xml de ejemplo tanto para el envio de solicitud como el ejemplo del xml de respuesta que yo recibiria, pero no tengo idea de como tratar un xml desde access, basicamente lo que estaba buscando era un ejemplo para darme una idea de como hacerlo.

Espero puedas apoyarme

Muchas gracias
Saludos


Editado por maya85 - 08/Septiembre/2011 a las 16:26
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
Pablillo I Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 27/Julio/2006
Localización: España
Estado: Sin conexión
Puntos: 298
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 16:45
Hola, tratar un archivo xml en Access, es como tratar cualquier archivo de texto puro y duro.

Como veo que no es muy extenso, lo cargaría todo en una variable y luego iría buscando los campos que necesito para trasladarlo a mi base de datos.

Busca como leer un archivo de texto.

Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 16:49
Gracias pablillo lo buscare

saludos
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
Tikimore Ver desplegable
Moderador
Moderador


Unido: 02/Enero/2008
Localización: España
Estado: Sin conexión
Puntos: 1519
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 19:01

Para conectar con el Servicio Web tenemos que instalar el Microsoft Soap Toolkit version 3.

Una vez instalado referenciamos la librería Microsoft Soap Type Library v3.0.
 
Declaramos en el procedimiento una variable del tipo declarado
 
Dim ConectorSoap As New SoapClient30
 
Para conectar usamos la cadena de llamada al servicio a través de  
ConectorSoap.mssoapinit pasándole los parámetros que nos pide.
 
Establecemos el tiempo para la respuesta
ConectorSoap.ConnectorProperty("Timeout") = 30000 '30 segundos
 
Declaramos una variable para recoger la respuesta
Dim XMLRespuesta As String
 
Y ahora le pasamos el comando que queramos ejecutar del servicio y recogemos la respuesta:
XMLRespuesta = ConectorSoap."El comando" (Aqui los parámetros)
 
Una vez recogida la respuesta la tratamos bien como xml o bien como fichero de texto plano.
Yo te recomiendo hacerlo a través de xml porque es mucho más eficiente pero eso lo debes determinar tú.
 
Un saludo.
 


Editado por Tikimore - 08/Septiembre/2011 a las 19:02
Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 20:08
hola Tikimore te menciono lo que ya tenia hecho : ya tenia instalado el Toolkit y tambien ya tenia la referencia activa ,dentro del formulario declare lo siguiente :

Private Sub Form_Current()

Dim ConectorSoap As New SoapClient30

ConectorSoap.MSSoapInit ("http://www.dcm.com.mx:8081/ServidorDCWS/DatosArticulo?WSDL")

ConectorSoap.ConnectorProperty("Timeout") = 5000 '5 segundos

Dim XMLRespuesta As String
XMLRespuesta =

en esta parte ya me perdi, indicas
Y ahora le pasamos el comando que queramos ejecutar del servicio y recogemos la respuesta:

XMLRespuesta = ConectorSoap.MSSoapInit("http://www.dcm.com.mx:8081/servidorDCWS/DatosArticulo?WSDL") '(Aqui los parámetros)
Aqui es donde coloco el xml en donde hago la solicitud de informacion :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body xmlns:wc="http://dcm.com.mx.ServidorWS/" >
<wc:obtenerDatosIdArticulo>
<EncabezadoTransaccion>
<contrasena>con</contrasena>
<usuario>usu</usuario>
</EncabezadoTransaccion>
<Articulo>92274A</Articulo> /*Numero de parte de DCM o del Fabricante*/
</wc:obtenerDatosIdArticulo>
</soapenv:Body>
</soapenv:Envelope>


y ahi mismo coloco el xml de respuesta.



No se si hasta aqui voy bien
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 08/Septiembre/2011 a las 20:23
agrego que en estosa momentos estoy investigando como tratar los xml desde VBA

Saludos
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
Tikimore Ver desplegable
Moderador
Moderador


Unido: 02/Enero/2008
Localización: España
Estado: Sin conexión
Puntos: 1519
Enlace directo a este mensaje Enviado: 09/Septiembre/2011 a las 19:06
Cuando uno se conecta a un servicio web debe pasar la dirección del servicio, el servicio al que se desea acceder y el puerto.
 
Dicho ésto. Si en un navegador pones la dirección del servicio te aparecera un xml con toda la información del SW.
 
Me he metido a la dirección que pones y viendo un poco deberías usar como comando de conexión el siguiente:
 
 
MiSoap.mssoapinit "http://200.52.87.135:8081/ServidorDCWS/DatosArticulo?WSDL","DatosArticuloService","DatosArticuloPort"
 
 
Y una vez conectado establecer el intervalo de tiempo de trabajo, es decir, si pasado ese tiempo no hay respuesta del servicio se cancelaría la operación.
Para ello:
 

SoapJCCM.ConnectorProperty("Timeout") = 30000 '30 segundos
 
Y ahora, una vez conectados, le pasamos el comando con la petición de lo que queremos y obtenemos la respuesta.
 

XMLespuesta = MiSoapJCCM.obtenerDatosIdArticulo('Aqui los parámetros y los xml que necesitemos para la petición')
 
Un saludo.


Editado por Tikimore - 09/Septiembre/2011 a las 19:08
Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 09/Septiembre/2011 a las 23:26
Hola tikimore muchas gracias por el dato me esta ayudando de mucho para resolver el tema , lo que estoy revisando ahora son los comandos para hacer la peticion de informacion que imagino que debe ser algo similar a como tratar la respuesta.

Imagino que debo declarar las variables que ocupare para enviar los comandos. encontre en la web del guille lo siguiente:

' Indicar el parámetro a enviar
    parser.selectSingleNode("/soap:Envelope/soap:Body/CaF/valor").Text = txtC.Text
    '
    ' Mostrar el código XML enviado al servicio Web
    Text1.Text = parser.xml
    ' Usar el control Inet para realizar la operación HTTP POST
    Inet1.Execute txtURL.Text, "POST", parser.xml, "Content-Type: text/xml; charset=utf-8" & vbCrLf & "SOAPAction: http:"//elGuille/WebServices/CaF"
que lo que entiendo es que dentro de un cuadro de texto que esta en el formulario toman el dato que escriben, pero aqui mi duda es donde colocan el xml en donde viene la instruccion de lo que quiero consultar.

jaja este tema esta muy bueno e interesante espero concretarlo claro con la ayuda tuya y de los que quieran apoyar, ahora que busque en toda la historia del foro hilos relacionados con esto hay varias inconclusos y estoy seguro que esto le servira a mas de uno en el futuro, pues bueno a seguir empapandome de informacion para tratar de resolverlo.

Saludos
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
maya85 Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 22/Agosto/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 388
Enlace directo a este mensaje Enviado: 10/Septiembre/2011 a las 18:55
Hola Tikimore, imagino que ya logramas hacer la coneccion porque en un principio lo habia colocado como me lo indicaste pero me enviaba un error 424 en tiempo de ejecucion pero era porque los nombres de las variables no eran iguales. pero ya las coloque igual y al momento de llamar la funcion , no hace nada pero tampoco envia error.

asi es como quedo

Option Compare Database

Public Function EnlaceDC()
Dim ConectorSoap As New SoapClient30

ConectorSoap.MSSoapInit "http://200.52.87.135:8081/ServidorDCWS/DatosArticulo?WSDL", "DatosArticuloService", "DatosArticuloPort"

ConectorSoap.ConnectorProperty("Timeout") = 5000 '5 segundos

End Function

Si es que asi funciona bien, ahora seguire viendo lo de el envio de la peticion.

Saludos
La sabiduría suprema es tener sueños bastante grandes para no perderlos de vista mientras se persiguen.


Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable