Moin,
ich steh auf dem Schlauch....
Ich möchte mit VBA einen HTTP Post senden.
Das klappt beim versenden OHNE Payload auch soweit auch ganz gut.
Private Function http_post(url As String, payload As String) As String
Dim req As MSXML2.ServerXMLHTTP60
Set req = New MSXML2.ServerXMLHTTP60
With req
.Open "POST", url, False
.setRequestHeader "Accept:", "application/json"
.setRequestHeader "Content-Type:", "application/json"
.setRequestHeader "X-Api-Key:", "---"
.send
http_post = .responseText
End With
End Function
Das HTTP-API kann zusätzlich auch noch über einen mit gesendeten JSON Payload weiter spezifiziert werden.
Der
funktionierende PYTHON Code hierfür sieht so aus:
import requests
url = "https://api.bavest.co/v0/quote"
payload = { "isin": "US02079K3059" }
headers = {
"accept": "application/json",
"content-type": "application/json",
"x-api-key": "---"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
Hierfür habe ich meinen Code wie folgt erweitert:
Private Function http_post(url As String, payload As String) As String
Dim req As MSXML2.ServerXMLHTTP60
Set req = New MSXML2.ServerXMLHTTP60
payload = "{ ""isin"": ""US02079K3059"" }"
With req
.Open "POST", url, False
.setRequestHeader "Accept:", "application/json"
.setRequestHeader "Content-Type:", "application/json"
.setRequestHeader "X-Api-Key:", "---"
.send payload
http_post = .responseText
End With
End Function
Das API meldet hier:
{"message": "Symbol does not exist.", "status": "ERROR"}
Mit diesem String:
payload = "{ 'isin': 'US02079K3059' }"
meldet das API:
{"message": "Internal server error"}
payload = "{ ""isin"": ""US02079K3059"" }"
scheint von dem API wohl akzeptiert zu werden, kann aber den Inhalt nicht vollständig interpretieren.
payload = "{ 'isin': 'US02079K3059' }"
scheint wohl nichtmal als gültiger JSON erkannt zu werden.
Was mache ich hier falsch?
Grüße
Pf@nne