API call uitvoeren vanuit Excel geeft 415 error

Status
Niet open voor verdere reacties.

BjorntobeWild

Gebruiker
Lid geworden
29 aug 2011
Berichten
120
Goedendag,

Ik probeer vanuit Excel middels VBA data te zenden naar een website.
Indien ik de parameters als volgt achter de url plak parameter1=value1&parameter2=value2, etc. wordt de data zonder fouten verzonden.

Nu wil ik de data verzenden volgens een Json-format. Helaas krijg ik hierbij onderstaande foutmelding:
Code:
{    "ResponseStatus": {
        "ErrorCode": "415",
        "Message": "Your request must specify JSON or XML format. Do this by adding 'format=xml/json' to your URL query string, or by setting a request header of Content-Type to be 'application/json' or 'application/xml'.",
        "Errors": [{
            "ErrorCode": "415",
            "FieldName": "",
            "Message": "Your request must specify JSON or XML format. Do this by adding 'format=xml/json' to your URL query string, or by setting a request header of Content-Type to be 'application/json' or 'application/xml'."
        }]
    }
}

De parameters in Json opmaak kunnen vanuit een cel worden opgehaald of vanuit een Json bestand (zie code hieronder). In beide gevallen krijg ik bovenstaande foutmelding.
Code:
{


  "UserId": "",


  "UserEmail": "",


  "UserExternalId": "100025",


  "Title": "test",


  "Body": "bericht",


  "Sound": true,


  "ExpirySecs": 0,


  "CompanyId": 00000,
  "IntegrationKey": "xxxxxxxxxxxxxxxxxxxxxxx"


}
Enig idee of het mogelijk is wat ik wil of maak ik ergens een fout?

Hier de code van mijn VBA-script.
Code:
Sub test_API()
Dim objHTTP     As Object
Dim URL         As String
Dim Data        As String
Dim result      As String


Dim FSO As New FileSystemObject
Data = Range("D22")


Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "https://mijnurl.nl:443/api/v2/push?"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/json" 'if you have/need headers
objHTTP.send Data
result = objHTTP.responseText
   'Some simple debugging
   Range("B22").Value = result
   Range("D22").Value = Data




   Set objHTTP = Nothing
End Sub
 
En de eerste methode? format=json toevoegen aan de URL?

Voor je huidige methode wil je niet een:

Code:
objHTTP.Open "GET",

in plaats van een POST ? mogelijk is dat nog iets waar de API van in de war raakt? voor de rest zie ik zo geen directe fouten
 
Beste Wampier,

1. In mijn header heb ik al aangegeven dat het om json format gaat, of moet ik dit nog ergens anders toevoegen?
2. Het is de bedoeling om gegevens vanuit Excel te verzenden naar een website. Het moet dus echt POST zijn.

Indien ik de gegevens via POSTMAN verzend gaat het prima.
 
De website geeft aan dat er twee manieren zijn: headers of toevoegen aan de URL. Gezien headers niet lijken te werken zoals verwacht kun je proberen of toevoegen aan de URL wel werkt? Volgens de error die je krijgt lijkt het toch ergens fout te gaan
 
Het is mij gelukt met onderstaande code.

Code:
Sub POST()


Dim httpObject As Object
 Set httpObject = CreateObject("MSXML2.XMLHTTP")
 Dim sURL As String
 Dim JSONString As String
 Dim Body As String
 
sURL = "https://mijnurl.nl:443/api/v2/push?"


Body = Range("A22")


httpObject.Open "POST", sURL, False
'httpObject.setRequestHeader "content-length", Len(sURL)
httpObject.setRequestHeader "Content-type", "application/json"
httpObject.setRequestHeader "Accept", "application/json"
httpObject.send Body
MsgBox httpObject.Status
MsgBox httpObject.responseText


End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan