Sub Macro2()


Dim FileName As String
FileName = "C:\progress64.txt"
attachNameStr = "progress.pptx"
IFile = FreeFile()

Open FileName For Binary Access Read Lock Write As #IFile
attachStr = Input$(LOF(IFile), #IFile)
Close #IFile

' convert attachment to base64
'Set mybase64 = New Base64
'' attachStr = mybase64.Encode(attachStr)

'The above encoding is taken from here: See the attached Base64.zip file
'http://www.vbforums.com/showthread.php?379072-VB-Fast-Base64-Encoding-and-Decoding
'The actual HTTP send code:

Dim ContentLength As Long, StringToSend1 As String, StringToSend2 As String
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
StringToSend1 = "sessionId=f51aeb73d78043559697fe6d840332bc@1&id=306212&fieldName=file&fileName=progress.pptx&objName=teste_templates&contentType=application%2Fpptx&output=xml&value="
StringToSend2 = attachStr
ContentLength = Len(StringToSend1 + URLEncode(StringToSend2, False))

ServerStr = "http://localhost:8080"

objHTTP.Open "POST", ServerStr & "/rest/api/setDataField", False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.setRequestHeader "Content-Length", ContentLength
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.Send (StringToSend1 + URLEncode(StringToSend2, False))


Debug.Print ContentLength
Debug.Print objHTTP.responseText
End Sub


Public Function URLEncode( _
   StringVal As String, _
   Optional SpaceAsPlus As Boolean = False _
) As String

  Dim StringLen As Long: StringLen = Len(StringVal)

  If StringLen > 0 Then
    ReDim result(StringLen) As String
    Dim i As Long, CharCode As Integer
    Dim Char As String, Space As String

    If SpaceAsPlus Then Space = "+" Else Space = "%20"

    For i = 1 To StringLen
      Char = Mid$(StringVal, i, 1)
      CharCode = Asc(Char)
      Select Case CharCode
        Case 97 To 122, 65 To 90, 48 To 57, 45, 46, 95, 126
          result(i) = Char
        Case 32
          result(i) = Space
        Case 0 To 15
          result(i) = "%0" & Hex(CharCode)
        Case Else
          result(i) = "%" & Hex(CharCode)
      End Select
    Next i
    URLEncode = Join(result, "")
  End If
End Function