Imports System.IO
Imports System.Net
Imports System.Text
Imports Newtonsoft.Json
#Region "Estructura y enum"
Public Structure Parametro
Sub New(ByVal atrib As String, ByVal valo As String)
Atributo = atrib
Valor = valo
End Sub
Property Atributo As String
Property Valor As String
End Structure
Public Structure Response
Property StatusCode As Integer
Property Succes As Boolean
Property Data As String
End Structure
Public Enum Metodo As Integer
MetodoGET = 0
MetodoPOST = 1
End Enum
Public Enum ContentType As Integer
json = 0
formUrlEncoded = 1
End Enum
#End Region
Friend Class ConsumeRest
#Region "Propiedades"
Public Property UrlDestino As String
Public Property Metodo As Metodo
Public Property Headers As List(Of Parametro)
Public Property ContentType As ContentType
Public Property PreguntaJson As String
#End Region
Sub New()
End Sub
Sub New(ByVal tipoMetodo As Metodo)
Metodo = tipoMetodo
End Sub
Private Request As HttpWebRequest
Private RslJson As Response = Nothing
Private Sub AgregarContentType()
'tipo de contenido
Select Case ContentType
Case ContentType.json
Request.ContentType = "application/json;"
Case ContentType.formUrlEncoded
Request.ContentType = "application/x-www-form-urlencoded;"
Case Else
Throw New Exception("ContentType no admitido")
End Select
Request.ContentType &= "charset=utf-8"
Request.Accept = "application/json"
End Sub
Private Sub AgregarHeaders()
'agregando headers
If Headers IsNot Nothing Then
For Each ele As Parametro In Headers
Request.Headers.Add(ele.Atributo, ele.Valor)
Next
End If
End Sub
Private Sub AgregarMetodo()
'metodo
Select Case Metodo
Case Metodo.MetodoGET
Request.Method = "GET"
Case Metodo.MetodoPOST
Request.Method = "POST"
Case Else
Throw New Exception("Metodo no admitido")
End Select
End Sub
Friend Function Consumir() As Response
'Dim postString As String = JsonConvert.SerializeObject(claseObjeto)
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
Request = HttpWebRequest.Create(UrlDestino)
Call AgregarContentType()
Call AgregarHeaders()
Call AgregarMetodo()
If PreguntaJson.Length > 0 Then
Dim data As Byte() = UTF8Encoding.UTF8.GetBytes(PreguntaJson)
Dim dataStream As Stream = Request.GetRequestStream
dataStream.Write(data, 0, data.Length)
dataStream.Close()
End If
Try
Using respuesta As HttpWebResponse = Request.GetResponse
RslJson = New Response
RslJson.StatusCode = respuesta.StatusCode
Using vStream As Stream = respuesta.GetResponseStream
Using vReader As New StreamReader(vStream)
RslJson.Data = vReader.ReadToEnd
'rslJson.Objeto = JsonConvert.DeserializeObject(Of Object)(rslJson.Json)
vReader.Close()
End Using
vStream.Close()
End Using
respuesta.Close()
End Using
Catch ex As Exception
Throw ex
End Try
Return RslJson
End Function
End Class