Siguiendo el tutorial de web service, me da el error interno,
Buenos Dias,Para los que os incorporais a este hilo, esta pregunta proviene de:
https://www.b4x.com/android/forum/t...ebservice-tipo-asp-net-asmx.45107/post-714701
Felix-666, deberias poder detallarnos el tipo de "internal error" que esta recibiendo en JobDone. Ejecuta en modo de depuracion (debug) y analiza el valor de Job.errormessage. Aqui deberia aparecer la descripcion detallada del error.
Aprovecho para comentarte que el tutorial necesita ser actualizado ya que como comenta Jose J.Aguilar actualmente deberiamos utilizar okhttputils2. (Cuando tenga un hueco intentare actualizarlo).
En mis aplicaciones b4a siempre me decante por utilizar el protocolo http post al ser mas sencillo de habilitar que el protocolo soap. Y utilizando un puerto diferente al 80, no he tenido problemas.
XML = XML & "<HelloWorld xmlns='http://www.miweb.com:8091/'>"
XML = XML & "<Nombre>" & Nombre & "</Nombre>"
XML = XML & "</HelloWorld>"
XML = XML & "</soap12:Body>"
XML = XML & "</soap12:Envelope>"
XML = XML.Replace("'", Chr(34))
job1.Initialize("JOBSOAP", Me)
job1.PostString ("www.miweb.com:8091/nombredelwebservice.asmx", XML)
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><soap:Code><soap:Value>soap:Sender</soap:Value></soap:Code><soap:Reason><soap:Text xml:lang="en">System.Web.Services.Protocols.SoapException: Unable to handle request without a valid action parameter. Please supply a valid soap action.
at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()
at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
at System.Web.Services.Protocols.SoapServerProtocol.Init......
XML = XML & "<HelloWorld xmlns='http://www.miweb.com:8091/'>"
Sub ConsumirServicioSOAP(Nombre As String)
Dim job1 As HttpJob
Dim XML As String
XML = ""
XML = XML & "<?xml version='1.0' encoding='utf-8'?>"
XML = XML & "<soap12:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap12='http://www.w3.org/2003/05/soap-envelope'>"
XML = XML & "<soap12:Body>"
XML = XML & "<HelloWorld xmlns='http://www.miweb.com/'>"
XML = XML & "<Nombre>" & Nombre & "</Nombre>"
XML = XML & "</HelloWorld>"
XML = XML & "</soap12:Body>"
XML = XML & "</soap12:Envelope>"
XML = XML.Replace("'", Chr(34))
job1.Initialize("JOBSOAP", Me)
job1.PostString ("http://miweb.com:8091/Saljub.asmx", XML)
job1.GetRequest.SetContentType("application/soap+xml")
End Sub
Tienes razón xicu, en un principio, me funciona en el puerto 80 (httputils2), pero empece a retocar el programa, y despues de tantas pruebas, tanto en el webservice como en el b4a, ya no tiraba de ninguna manera, suele pasar cuando empiezas a mezclar codigo de un sitio y de otro.Felix.666, tu pregunta inicial era: "estoy probando los webservice, y cuando es por puerto 80, no hay problemas, pero para consumir un webservice por otro puerto ej. 8091, da siempre error interno de servidor"
He probado tu codigo (falta encabezado) con mi servidor
B4X:XML = XML & "<HelloWorld xmlns='http://www.miweb.com:8091/'>" XML = XML & "<Nombre>" & Nombre & "</Nombre>" XML = XML & "</HelloWorld>" XML = XML & "</soap12:Body>" XML = XML & "</soap12:Envelope>" XML = XML.Replace("'", Chr(34)) job1.Initialize("JOBSOAP", Me) job1.PostString ("www.miweb.com:8091/nombredelwebservice.asmx", XML)
y efectivamente da error el error interno.
Pero quitando el puerto en la linea:
B4X:XML = XML & "<HelloWorld xmlns='http://www.miweb.com:8091/'>"
me funciona correctamente
Por tanto tu codigo completo deberia quedar asi:
B4X:Sub ConsumirServicioSOAP(Nombre As String) Dim job1 As HttpJob Dim XML As String XML = "" XML = XML & "<?xml version='1.0' encoding='utf-8'?>" XML = XML & "<soap12:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap12='http://www.w3.org/2003/05/soap-envelope'>" XML = XML & "<soap12:Body>" XML = XML & "<HelloWorld xmlns='http://www.miweb.com/'>" XML = XML & "<Nombre>" & Nombre & "</Nombre>" XML = XML & "</HelloWorld>" XML = XML & "</soap12:Body>" XML = XML & "</soap12:Envelope>" XML = XML.Replace("'", Chr(34)) job1.Initialize("JOBSOAP", Me) job1.PostString ("http://miweb.com:8091/Saljub.asmx", XML) job1.GetRequest.SetContentType("application/soap+xml") End Sub
Me alegro!.He probado tu solución, y va perfecto, gracias por la ayuda prestada, y por el interes demostrado por ti, y por los demas mienbros del forum.