Imports System.Net
Imports System.IO
Imports WinHttp

Module Module1

    Sub Main()

        Dim xmlCampaign = "<?xml version=""1.0"" encoding=""UTF-8""?><agendize><account><campaign><name>Campagne0</name><color>#EC50FF</color><description>This is a second campaign uploaded by vb.net</description></campaign></account></agendize>"

        ' Assemble an HTTP request.
        Dim WinHttpReq = New WinHttpRequest
        WinHttpReq.Open("POST", "http://www.agendize.com/api/1.0/data", False)
        ' Set the user name and password.
        WinHttpReq.SetCredentials("myusername", "mypassword", 0)
        ' Send the HTTP Request.
        WinHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
        WinHttpReq.Send("key=3ac024abf8c72460764b965199f81808f4cb08&xml=" & urlEncode(xmlCampaign))
        ' Return the response.
        Dim xmlContent = WinHttpReq.ResponseText
        Dim domDoc As Xml.XmlDocument
        domDoc = New Xml.XmlDocument
        domDoc.LoadXml(xmlContent)
        Console.WriteLine(domDoc.GetElementsByTagName("result").Item(0).InnerText)

    End Sub

    Public Function urlEncode(ByVal toEncode As String)
        Dim encoded = ""
        Dim charArray(16) As String
        Dim charArray2(16) As String
        Dim temp As String
        Dim temp2 As String
        temp = "$.&.+.,./.:.;.=.?.@. ."".<.>.#.%"
        temp2 = "24,26,2B,2C,2F,3A,3B,3D,3F,40,20,22,3C,3E,23,25"
        charArray = Split(temp, ".")
        charArray2 = Split(temp2, ",")
        For i = 0 To toEncode.Length - 1
            Dim currentChar = toEncode(i)
            Dim indice = -1
            For j = LBound(charArray) To UBound(charArray)
                If currentChar = charArray(j) Then
                    indice = j
                End If
            Next
            If indice = -1 Then
                encoded = encoded & currentChar
            Else
                encoded = encoded & "%" & charArray2(indice)
            End If
        Next
        Return encoded
    End Function
End Module