Hola, nunca he hecho esto en Android, con otro lenguaje que uso para windows tengo componentes que lo hacen todo "milagrosamente".
He mirado varios hilos y no me entero porque no son muy genéricos, a ver si podéis ayudarme.
Pongamos un ejemplo sencillo, hago una llamada con una divisa y me devuelve el valor de la misma.
url= http://1.2.3.4:8080/wsdl/divisas
método: damevalor( codigodivisa )
¿Podéis ayudarme con un ejemplo sencillo de cómo hacer la llamada?
No sé si hace falta más información para el ejemplo.
Muchas gracias.
Saludos tengo unas series de API (desarrolladas en PHP) que implementan los métodos GET, POST, PUT y DELETE de forma excelente y ya funciona muy bien desde javascript en una app web usando AJAX + JQUERY Lo que deseo es poder usar esa API desde B4A, entendiendo que según el método a usar, se...
www.b4x.com
nota:
debes indicar mas información si el soap devuelve un JSON o XML
¿Qué información se necesita? estoy bastante perdido en esto, no sé si hay que hacer una llamada a la url con los parámetros, o si hay que crear un fichero xml, o si hay que usar una biblioteca específica... ni idea.
Hola. Tengo un webservice en net asmx que regresa un dataset. Funciona bien en el navegador y regresa un XML con el resultado de mi consulta. Deseo ese dataset utilizarlo en B4A y desplegar los datos en unas cajas de texto He buscado y he llegado hasta este punto donde si entra al jobdone pero...
Tengo un webservice asmx realizado en .net funcionando. Utilizo IIS. En B4A cuando utilizo solamente un parámetro funciona perfecto pero cuando son dos o mas me regresa NULL. Nota: Aunque diga sumanumeros o hable de numeros, utilizo strings. Gracias. Este es mi codigo actual en B4A Private...
Espero que este post anime a otros usuarios a compartir con el resto de foreros de la comunidad, sus "descubrimientos", resultado de su árdua busqueda en multitud de hilos y medias respuestas que supone muchas veces resolver un dilema. También seria importante que os tomarais un minuto en leer...
Hola, ya está solucionado, ha sido gracias a José J. Aguilar que se ha roto la cabeza para darme pistas de por dónde buscar y, principalmente a TILogistic que incluso me ha proporcionado un código que devuelve el resultado esperado, que es este:
B4X:
Dim WSLinkSoap As String = "http://xxx.xxx.xxx.xxx:8050/soap/IwsNewGES2000"
Dim Parameter1 As String = "12345678"
Dim Parameter2 As String = "1"
Dim Parameters As String = $"<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
<soap:Body>
<R_EsReganteOK>
<DNI>${Parameter1}</DNI>
<EMP>${Parameter2}</EMP>
</R_EsReganteOK>
</soap:Body>
</soap:Envelope>"$
Wait For(WSCallSoapURL(WSLinkSoap, Parameters)) Complete (XMLResult As String)
If XMLResult.Length = 0 Then Return
Log(XMLResult)
Dim Xml2Map1 As Xml2Map
Xml2Map1.Initialize
Dim mRoot As Map = Xml2Map1.Parse(XMLResult)
Log(mRoot.As(JSON).ToString)
B4X:
Public Sub WSCallSoapURL(URL As String, Parameters As String) As ResumableSub
Dim Result As String
Dim j As HttpJob
Try
j.Initialize("", Me)
j.PostString (URL, Parameters)
j.GetRequest.SetHeader("Content-Type","text/xml")
j.GetRequest.SetHeader("Content-length", Parameters.Length)
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
Result = j.GetString
Else
ToastMessageShow("¡Hummm...!",False)
End If
Catch
Log(LastException)
End Try
j.Release
Return Result
End Sub
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
Tips
Para crear el Body XML de Request utilize XMLBuilder (esta en la lib XML2MAP)
B4X:
Dim WSLinkSoap As String = "http://xxx.xxx.xxx.xxx:8050/soap/IwsNewGES2000"
Dim Parameter1 As String = "23760550"
Dim Parameter2 As String = "1"
Dim XMLBodySoap As XMLBuilder
XMLBodySoap = XMLBodySoap.create("soap:Envelope")
XMLBodySoap = XMLBodySoap.namespace2("soap","http://schemas.xmlsoap.org/soap/envelope/")
XMLBodySoap = XMLBodySoap.element("soap:Body")
XMLBodySoap = XMLBodySoap.element("R_EsReganteOK")
XMLBodySoap = XMLBodySoap.element("DNI").text(Parameter1).up
XMLBodySoap = XMLBodySoap.element("EMP").text(Parameter2).up
Dim XMLBodyRequest As String = XMLBodySoap.asString2(CreateMap("indent": "yes"))
Log(XMLBodyRequest)
Wait For(WSCallSoapURL(WSLinkSoap, XMLBodyRequest)) Complete (XMLResult As String)
If XMLResult.Length = 0 Then Return
Log(XMLResult)
Dim Xml2Map1 As Xml2Map
Xml2Map1.Initialize
Dim mRoot As Map = Xml2Map1.Parse(XMLResult)
Log(mRoot.As(JSON).ToString)
B4X:
Public Sub WSCallSoapURL(URL As String, Parameters As String) As ResumableSub
Dim Result As String
Dim j As HttpJob
Try
j.Initialize("", Me)
j.PostString (URL, Parameters)
j.GetRequest.SetHeader("Content-Type","text/xml; charset=utf-8")
j.GetRequest.SetHeader("Content-length", Parameters.Length)
Wait For (j) JobDone(j As HttpJob)
If j.Success Then
Result = j.GetString
End If
Catch
Log(LastException)
End Try
j.Release
Return Result
End Sub