Consuming WEB SERVICE Continuation

frutuopa

Member
Joined
Apr 4, 2022
Messages
6
Programming Experience
10+
Hello


This post is a continuation of the previous post, but with another problem.

Below I show the code associated with a button and the corresponding class.

resposta.Success is always False.... In the last sub I show you, in the constructor, in debug mode, I can see that the list is well filled, and that Succes=true and message="OK"... However, it is continuous giving the error
As I said in the previous post, if i run the compatible version in C#, everything goes well
Thank you very much

====================================== clgertal.vb

Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Imports System.IO
Imports System.Text


Namespace pf


Public Class clGertal


Public Class parametros
Public Property url As String
Public Property ApiKey As String
Public Property Key As String
Public Property CodigoExternoSeccao As String
End Class

Public Class ConsumosModel

Public Property CodigoExternoSeccao As String
Public Property DataInicio As DateTime
Public Property DataFim As DateTime
End Class

Public Class ConsumoResponseModel
Public Property FormaPagamento As String
Public Property TipoPagamento As String
Public Property NomePerfil As String
Public Property Livre As String
Public Property CodigoExternoConsumidor As String
Public Property Nome As String
Public Property CentroCusto As String
Public Property Data As String
Public Property NomeRefeicao As String
Public Property Hora As String
Public Property NumeroDocumento As String
Public Property NomeFamiliaProduto As String
Public Property CodigoExternoProduto As String
Public Property NomeProduto As String
Public Property Quantidade As Decimal
Public Property Preco As Decimal
Public Property PrecoFatura As Decimal
Public Property Valor As Decimal
Public Property Faltoso As String
Public Property NumeroCartao As String
Public Property ERefeicao As String
Public Property NumeroSeriePos As String
End Class
Public Class ConsumidorModel
Public Property CodigoExternoSeccao As String
Public Property NumeroColaborador As String
Public Property Nome As String
Public Property Cartao1 As String
Public Property CCusto As String
Public Property CodigoExternoPerfil As String
Public Property Telemovel As String
Public Property Email As String
Public Property NIF As String
Public Property Livre As String
End Class

Public Class ConsumidoresResponseModel
Public Property NumeroColaborador As String
Public Property Estado As String
Public Property Mensagem As String
End Class

Public Class FitApiListResponse
Public Const OkMessage As String = "Ok"
Public Const FailMessage As String = "Fail"
Public Property Success As Boolean
Public Property Message As String

Public Sub New(ByVal success As Boolean, ByVal message As String)
success = success
message = message
End Sub

Public Shared Function Ok(Of T)(ByVal model As List(Of T)) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Ok(model)
End Function

Public Shared Function Ok(Of T)(ByVal model As IEnumerable(Of T)) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Ok(model)
End Function

Public Shared Function Ok(Of T)(ByVal model As List(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Ok(model, message)
End Function

Public Shared Function Ok(Of T)(ByVal model As IEnumerable(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Ok(model, message)
End Function

Public Shared Function Fail(Of T)(ByVal message As String) As FitApiListResponse(Of T)
Return New FitApiListResponse(Of T)(Nothing, message, False)
End Function

Public Shared Function Fail(Of T)(ByVal model As List(Of T)) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Fail(model)
End Function

Public Shared Function Fail(Of T)(ByVal model As IEnumerable(Of T)) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Fail(model)
End Function

Public Shared Function Fail(Of T)(ByVal model As List(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Fail(model, message)
End Function

Public Shared Function Fail(Of T)(ByVal model As IEnumerable(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return FitApiListResponse(Of T).Fail(model, message)
End Function
End Class


Public Class FitApiListResponse(Of T)
Inherits FitApiListResponse

Public Property Model As List(Of T)

Public Sub New(ByVal model As List(Of T), ByVal message As String, ByVal success As Boolean)
MyBase.New(success, message)
model = model
success = success
message = message
End Sub

Public Overloads Shared Function Ok(ByVal model As List(Of T)) As FitApiListResponse(Of T)
Return New FitApiListResponse(Of T)(model, OkMessage, True)
End Function

'
Public Overloads Shared Function Ok(ByVal model As IEnumerable(Of T)) As FitApiListResponse(Of T)
Return Ok(model.ToList())
End Function

Public Overloads Shared Function Ok(ByVal model As List(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return New FitApiListResponse(Of T)(model, message, True)
End Function

Public Overloads Shared Function Ok(ByVal model As IEnumerable(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return Ok(model.ToList(), message)
End Function

Public Overloads Shared Function Fail(ByVal message As String) As FitApiListResponse(Of T)
Return New FitApiListResponse(Of T)(Nothing, message, False)
End Function

Public Overloads Shared Function Fail(ByVal model As List(Of T)) As FitApiListResponse(Of T)
Return New FitApiListResponse(Of T)(model, FailMessage, False)
End Function

Public Overloads Shared Function Fail(ByVal model As IEnumerable(Of T)) As FitApiListResponse(Of T)
Return Fail(model.ToList())
End Function

Public Overloads Shared Function Fail(ByVal model As List(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return New FitApiListResponse(Of T)(model, message, False)
End Function

Public Overloads Shared Function Fail(ByVal model As IEnumerable(Of T), ByVal message As String) As FitApiListResponse(Of T)
Return Fail(model.ToList(), message)
End Function
End Class



End Class
Public Module SystemIo

Public Function GetParametros() As clGertal.parametros
Dim param As clGertal.parametros = New clGertal.parametros()

Try
Dim dados As String = LerDados("parametros.json")
param = JsonConvert.DeserializeObject(Of clGertal.parametros)(dados)
Catch ex As Exception
MessageBox.Show(ex.Message, "Erro")
End Try

Return param
End Function
Public Function LerDados(ByVal path As String) As String
Dim retVal As String = ""

Try

If Not System.IO.Directory.Exists("Files") Then
System.IO.Directory.CreateDirectory("Files")
End If

Dim file As String = "Files\" & path

If Not System.IO.File.Exists(file) Then
Return retVal
End If

Using sr As StreamReader = System.IO.File.OpenText(file)
Dim s As String = ""

While (CSharpImpl.__Assign(s, sr.ReadLine())) IsNot Nothing
retVal = retVal & s
End While
End Using

Catch ex As System.Exception
MessageBox.Show(ex.Message, "Erro")
End Try

Return retVal
End Function

Private Class CSharpImpl
<Obsolete("Please refactor calling code to use normal Visual Basic assignment")>
Shared Function __Assign(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
End Class

Public Sub GuardarDados(ByVal path As String, ByVal dados As String)
Try

If Not System.IO.Directory.Exists("Files") Then
System.IO.Directory.CreateDirectory("Files")
End If

Dim file As String = "Files\" & path

If System.IO.File.Exists(file) Then
System.IO.File.Delete(file)
End If

If Not System.IO.File.Exists(file) Then

Using sw As StreamWriter = System.IO.File.CreateText(file)
sw.Write(dados)
End Using
End If

Catch ex As System.Exception
MessageBox.Show(ex.Message, "Erro")
End Try
End Sub

End Module
End Namespace

===========================================
Private Async Sub btnGetInfoConsumos_Click(sender As Object, e As EventArgs) Handles btnGetInfoConsumos.Click

Dim url As String = txturl.Text
Dim TRNApiKey As String = txtApiKey.Text '

Dim client As HttpClient = New HttpClient()
client.DefaultRequestHeaders.Accept.Clear()
client.DefaultRequestHeaders.Add("APIkey", TRNApiKey)
client.DefaultRequestHeaders.Accept.Add(New Headers.MediaTypeWithQualityHeaderValue("application/json"))


Dim model As ConsumosModel = New ConsumosModel()
Dim modelResponse As ConsumoResponseModel = New ConsumoResponseModel()


model.CodigoExternoSeccao = txtCodigoExternoSeccao.Text
model.DataInicio = dtpapi1.Value
model.DataFim = dtpapi2.Value
Dim json As String = JsonConvert.SerializeObject(model)
Dim content As HttpContent = New StringContent(json, Encoding.UTF8, "application/json")
Dim response = Await client.PostAsync(txturl.Text & "Fecho/GetInfoConsumos", content)
Dim responseString = response.Content.ReadAsStringAsync()

Dim resposta As FitApiListResponse(Of ConsumoResponseModel) = JsonConvert.DeserializeObject(Of FitApiListResponse(Of ConsumoResponseModel))(responseString.Result)

If resposta.Success Then
DataGridView2.DataSource = resposta.Model
MessageBox.Show(resposta.Model.Count.ToString() & " linhas", "Sucesso")
Else
DataGridView2.DataSource = Nothing
MessageBox.Show(resposta.Message, "Erro")
End If
End Sub

=====================================

Public Sub New(ByVal model As List(Of T), ByVal message As String, ByVal success As Boolean)
MyBase.New(success, message)
model = model '''' LIST OK
success = success
message = message
End Sub
 
Back
Top