Hola, antes que nada quiero decir que cree una aplicación usando un web service de temperatura y me funcionó PERFECTO.
El punto es que cuando trato de implementar este mismo código para construir un widget ya no funciona, solo recibo un mensaje que dice que se detuvo el widget. Anexo el código porque no sé porqué mis aplicaciones las guarda de manera muy pesada (más de 512k) y no me permite subir el archivo.
Presento el código que mencioné y reitero que éste funcionó correctamente. Aparte anexo también una imagen del layout usado.
Es importante mencionar que ya he solicitado apoyo al foro en inglés y amablemente me contestan, sin embargo, las respuestas son como que más bien tips, pero no sirven de mucho, también les comento que cuando quede resuelto subiré las solución para que esté al alcance de toda la comunidad.
Si mi explicación no ha sido clara o falta más información, por favor déjenme saber.
Anexo también las imágenes usadas en la aplicación.
Gracias anticipadas.
El punto es que cuando trato de implementar este mismo código para construir un widget ya no funciona, solo recibo un mensaje que dice que se detuvo el widget. Anexo el código porque no sé porqué mis aplicaciones las guarda de manera muy pesada (más de 512k) y no me permite subir el archivo.
Presento el código que mencioné y reitero que éste funcionó correctamente. Aparte anexo también una imagen del layout usado.
Es importante mencionar que ya he solicitado apoyo al foro en inglés y amablemente me contestan, sin embargo, las respuestas son como que más bien tips, pero no sirven de mucho, también les comento que cuando quede resuelto subiré las solución para que esté al alcance de toda la comunidad.
Si mi explicación no ha sido clara o falta más información, por favor déjenme saber.
Anexo también las imágenes usadas en la aplicación.
Gracias anticipadas.
B4X:
#Region Project Attributes
#ApplicationLabel: TIM_Clima
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
Dim HttpClient1 As HttpClient
End Sub
Sub Globals
Dim URL As String
Dim XML As String
Dim Ciudad As String : Ciudad = "acapulco"
Dim Pais As String : Pais = "Mexico"
'''''''''''''''''''''''''''''''''''''''''''''
Dim lblTemperature As Label
Dim lblLocation As Label
Dim lblVisibility As Label
Dim lblSkyConditions As Label
Dim lblRelativeHumidity As Label
Dim imgWeather As ImageView
'''''''''''''''''''''''''''''''''''''''''''''
Dim intFin As Int 'Indice del fin de búsqueda del string correspondiente
Dim strResult As String 'Trae inf del Resultado para validar si se tiene información
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("lyoWeather")
If FirstTime Then
HttpClient1.Initialize ("HttpClient1")
End If
ConsumirServicio
End Sub
Sub ConsumirServicio()
Dim Request As HttpRequest
URL = "http://www.webservicex.net/globalweather.asmx"
XML = XML & "<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' xmlns:web='http://www.webserviceX.NET'>"
XML = XML & "<soap:Header/>"
XML = XML & "<soap:Body>"
XML = XML & "<web:GetWeather>"
XML = XML & "<web:CityName>" & Ciudad & "</web:CityName>"
XML = XML & "<web:CountryName>" & Pais & "</web:CountryName>"
XML = XML & "</web:GetWeather>"
XML = XML & "</soap:Body>"
XML = XML & "</soap:Envelope>"
Request.InitializePost2(URL, XML.GetBytes("UTF8"))
Request.SetHeader("Content-Type", "application/soap+xml; charset=utf-8")
Request.Timeout = 600000 'Setea el tiempo a 60 segundos
If HttpClient1.Execute(Request, 1) = False Then Return
ProgressDialogShow("Esperando Respuesta...")
End Sub
Sub HttpClient1_ResponseSuccess (Response As HttpResponse, TaskId As Int)
ProgressDialogHide
Dim resultSoapXML As String
resultSoapXML = Response.GetString("UTF8")
GetInfo(resultSoapXML)
End Sub
Sub GetInfo(ResultSoapXML As String)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''INI - substrings para ir obteniendo la Información del Web Service del Clima'''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Valida si se tiene información para la localidad seleccionada
strResult = ResultSoapXML.SubString(ResultSoapXML.IndexOf("<GetWeatherResult>")+ 18)
intFin = strResult.IndexOf("</GetWeatherResult>")
strResult = strResult.subString2(0, intFin)
If strResult = "Data Not Found" Then
ToastMessageShow ("No se tiene Información de Temperatura para " & Ciudad & "!", True)
Activity.Finish
End If
Set_Location(ResultSoapXML) 'Localidad
Set_Temperature(ResultSoapXML) 'Temperatura
Set_Visibility(ResultSoapXML) 'Visibilidad
Set_SkyConditions(ResultSoapXML) 'Condiciones Climáticas
Set_RelativeHumidity(ResultSoapXML) 'Humedad relativa
''' 'Hora
''' strTime = ResultSoapXML.SubString(ResultSoapXML.IndexOf("<Time>")+ 12)
''' intFin = strTime.IndexOf("</Time>")
''' strTime = strTime.subString2(0, intFin)
'''
''' 'Wind (Viento)
''' strWind = ResultSoapXML.SubString(ResultSoapXML.IndexOf("<Wind>")+ 12)
''' intFin = strWind.IndexOf("</Wind>")
''' strWind = strWind.subString2(0, intFin)
'''
''' 'DewPoint (Humedad)
''' strDewPoint = ResultSoapXML.SubString(ResultSoapXML.IndexOf("<DewPoint>")+ 16)
''' intFin = strDewPoint.IndexOf("</DewPoint>")
''' strDewPoint = strDewPoint.subString2(0, intFin)
'''
''' 'Pressure (presión Atmosférica)
''' strPressure = ResultSoapXML.SubString(ResultSoapXML.IndexOf("<Pressure>")+ 16)
''' intFin = strPressure.IndexOf("</Pressure>")
''' strPressure = strPressure.subString2(0, intFin)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''FIN - substrings para ir obteniendo la Información del Web Service del Clima'''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
Sub Set_Temperature(Temperatura As String) 'Temperatura
Temperatura = Temperatura.subString2(Temperatura.IndexOf("<Temperature>")+ 19, Temperatura.IndexOf("</Temperature>") )
Temperatura = Temperatura.subString2(Temperatura.IndexOf("(")+ 1, Temperatura.IndexOf("C)") )
Temperatura = Temperatura & " " & "°C"
lblTemperature.Text = Temperatura
End Sub
Sub Set_Location(Location As String) 'Localidad
Location = Location.SubString2(Location.IndexOf("<Location>")+ 16, Location.IndexOf(Pais))
lblLocation.Text = Location & " " & Pais
End Sub
Sub Set_SkyConditions(SkyConditions As String) 'Condiciones Climáticas
SkyConditions = SkyConditions.SubString2(SkyConditions.IndexOf("<SkyConditions>")+ 21, SkyConditions.IndexOf("</SkyConditions>"))
Select SkyConditions.Trim
Case "partly cloudy"
SkyConditions = "Parcialmente Nublado"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "002PartlyCloudy.png")
Case "mostly cloudy"
SkyConditions = "Mayormente Nublado"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "003MostlyCloudy.png")
Case "overcast"
SkyConditions = "Completamente Nublado"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "004Overcast.png")
Case "mostly clear"
SkyConditions = "Cielo mayormente despejado"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "001Clear.png")
Case "sunny"
SkyConditions = "Soleado"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "006Sunny.png")
Case "obscured"
SkyConditions = "Cielo completamente cubierto de cubes"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "005Obcured.png")
Case "clear"
SkyConditions = "Despejado"
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "001Clear.png")
Case Else
imgWeather.Bitmap= LoadBitmap(File.DirAssets, "000Weather.png")
End Select
lblSkyConditions.Text = "Condición Climática: " & SkyConditions
End Sub
Sub Set_Visibility(Visibility As String) 'Visibilidad
Dim dblCantidad As Float 'Cantidad
Dim strCnvrtMiles_Km As String 'Convierte de Millas a Kilómetros
dblCantidad = Visibility.SubString2(Visibility.IndexOf("<Visibility>")+ 18, Visibility.IndexOf("mile"))
Visibility = Visibility.SubString(Visibility.IndexOf("<Visibility>")+ 18)
Visibility = Visibility.SubString2(Visibility.IndexOf(":"), Visibility.IndexOf("</Visibility>"))
strCnvrtMiles_Km = 1.6093470879 * dblCantidad 'Una Milla equivale a 1.6093470879 Km
strCnvrtMiles_Km = NumberFormat(strCnvrtMiles_Km, 1, 2)
lblVisibility.Text = "Visibilidad: " & strCnvrtMiles_Km & " Km " & Visibility
End Sub
Sub Set_RelativeHumidity(RelativeHumidity As String) 'Temperature (Temperatura)
RelativeHumidity = RelativeHumidity.SubString2(RelativeHumidity.IndexOf("<RelativeHumidity>")+ 24, RelativeHumidity.IndexOf("</RelativeHumidity>"))
lblRelativeHumidity.Text = "Humedad Relativa: " & RelativeHumidity
End Sub
Sub HttpClient1_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
ProgressDialogHide
Dim resultSoapXML As String
resultSoapXML = Response.GetString("UTF8")
Msgbox(resultSoapXML,"")
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Attachments
Last edited: