0

I have a problem with the MSXML2.XMLHTTP object in VBA. I need to send a message in json but the auth token has double quotes in it. So in order for those double quotes to arrive in the message a backslash is used. Now by parsing the xml to Json the xmlhttp object adds an extra backslash.

Basically I send this "Token token=\x22AAA\x22"

And the server receives this "Token token=\\x22AAA\\x22"

Sub cmdOAuth2_Click()

  Dim webServiceURL As String
  Dim actionType As String
  Dim targetWord As String
  Dim actionType2 As String
  Dim targetWord2 As String

  webServiceURL = "https://api.esios.ree.es/archives"

  actionType = "Accept"
  targetWord = "application/json"
  actionType2 = "Content-Type"
  targetWord2 = "application/json"
  actionType3 = "Host"
  targetWord3 = "api.esios.ree.es"
  actionType4 = "Authorization"
  targetWord4 = "Token token=\x22AAA\x22"
  actionType5 = "Cookie"
  targetWord5 = " "

  With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", webServiceURL, False
    .setRequestHeader actionType, targetWord
    .setRequestHeader actionType2, targetWord2
    .setRequestHeader actionType3, targetWord3
    .setRequestHeader actionType4, targetWord4
    .setRequestHeader actionType5, targetWord5
    .send 
    If .Status = 200 Then
      Debug.Print .responseText
      MsgBox .getAllResponseHeaders
    Else
      Debug.Print .Status & ": " & .statusText
    End If
  End With

End Sub
David
  • 129
  • 1
  • 11
  • I don't see the difference between what you send and what the server receives, based on what you have shown. Also, you don't appear to be sending JSON (or anything for that matter) in your request's body, based on the code in your post. – chillin Nov 30 '18 at 19:49
  • Sorry for the confusion, I put 1 backslash in the first one and 2 in the second one, but stack overflow ignored the second one. If I put 3 it correctly shows 2. – David Dec 03 '18 at 03:46
  • I don't send json you are correct. I send a cURL. – David Dec 03 '18 at 03:47

0 Answers0