Imports System.Collections.Specialized Imports System.IO Imports System.Linq Imports System.Net Imports System.Text Imports System.Web Imports System.Xml.Serialization Imports Newtonsoft.Json ' The App requires References to System.Web to use function HttpUtility.UrlEncode ' and Requires external reference Newtonsoft.Json to use function JsonConvert.SerializeObject, to install it use NuGet Package Manager, https://www.nuget.org/packages/newtonsoft.json/ ' Install-Package Newtonsoft.Json ' The main entry point is Main Namespace ConsoleApplication2 Public Class Program Public Class PRequest Public Property Account As String Public Property ApiKey As String Public Property IdDevice As String Public Property StartUTC As String Public Property EndUTC As String Public Property LastLocation As Boolean ' Only for query GetLocation Public Property LastAlert As Boolean ' Only for query GetAlert Public Sub New() Account = "user@plaspy.com" ApiKey = "MyAPIKey" IdDevice = "IdDevice" LastPosition = True LastAlert = True StartUTC = DateTime.UtcNow.AddHours(-12).ToString("O") EndUTC = DateTime.UtcNow.ToString("O") End Sub Public Function GetParamsRequest() As String Dim request As New NameValueCollection() request("Account") = Account request("ApiKey") = ApiKey request("IdDevice") = IdDevice request("StartUTC") = StartUTC request("EndUTC") = EndUTC request("LastPosition") = LastPosition.ToString() Return String.Join("&", request.Cast(Of String)().[Select](Function(e) e + "=" + HttpUtility.UrlEncode(request(e)))) End Function Public Function GetXMLRequest() As String Dim builder As New StringBuilder() Dim s As New XmlSerializer(Me.[GetType]()) Using writer As New StringWriter(builder) s.Serialize(writer, Me) End Using Return builder.ToString().Replace("utf-16", "utf-8") End Function Public Function GetJSONRequest() As String Return JsonConvert.SerializeObject(Me) End Function End Class Public Const APIURL As String= "http://api.plaspy.com/api/GetLocation" ' Public Const APIURL As String= "https://api.plaspy.com/api/GetLocation" Private Shared Function GetPOSTResponse(contentType As String, data As String) As String Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(APIURL), HttpWebRequest) request.Method = "POST" request.ContentType = contentType & Convert.ToString(";charset=utf-8") Dim encoding__1 As New UTF8Encoding() Dim bytes As Byte() = encoding__1.GetBytes(data) request.ContentLength = bytes.Length Using requestStream As Stream = request.GetRequestStream() ' Send the data. requestStream.Write(bytes, 0, bytes.Length) End Using Dim webResponse As WebResponse = request.GetResponse() 'get result and release source Using reader As New StreamReader(webResponse.GetResponseStream(), Encoding.UTF8) Return reader.ReadToEnd() End Using End Function Private Shared Function GetGetResponse(contentType As String, data As String) As String Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(Convert.ToString(APIURL & Convert.ToString("?")) & data), HttpWebRequest) request.Method = "GET" request.ContentType = contentType & Convert.ToString(";charset=utf-8") Dim webResponse As WebResponse = request.GetResponse() 'get result and release source Using reader As New StreamReader(webResponse.GetResponseStream(), Encoding.UTF8) Return reader.ReadToEnd() End Using End Function Private Shared Sub MakeRequest(message As String, contentType As String, request As String, post As Boolean) Console.WriteLine(message) Console.WriteLine("Request: {0}", request) Dim response As String = If(post, GetPOSTResponse(contentType, request), GetGetResponse(contentType, request)) Console.WriteLine("Response: {0}", response) Console.WriteLine() End Sub Private Shared Sub MakePostRequest(message As String, contentType As String, request As String) MakeRequest(message, contentType, request, True) End Sub Private Shared Sub MakeGetRequest(message As String, contentType As String, request As String) MakeRequest(message, contentType, request, False) End Sub Public Shared Sub Main(args As String()) Dim request As New PRequest() MakePostRequest("Testing POST", "application/x-www-form-urlencoded", request.GetParamsRequest()) MakePostRequest("Testing POST XML", "text/xml", request.GetXMLRequest()) MakePostRequest("Testing POST JSON", "application/json", request.GetJSONRequest()) MakeGetRequest("Testing Get JSON", "application/json", request.GetParamsRequest()) End Sub End Class End Namespace