Kürzlich war ich bei der Erstellung eines Power BI-Berichts mit einer REST API-Datenquelle beteiligt. In diesem Beitrag zeige ich Ihnen, welche Tools mir das Arbeiten mit REST-Services erleichtert haben.
Die Fehlermeldung
Um auf den REST-Service zugreifen zu können, mussten wir zuerst ein Token erstellen und dieses im HTTP-Header an den Service zu übergeben. Wir haben den Rat hier befolgt, um dies in Power BI direkt zu erreichen aber es hat nicht funktioniert und wir haben irgendwann immer die folgende Fehlermeldung erhalten: “Specified value has invalid HTTP Header characters”
Meines Erachtens ist Power BI ziemlich intransparent, was hinter den Kulissen passiert. Ich wollte also zuerst wissen, ob der REST-Service wie erwartet funktioniert.
Testen des REST-Services ausserhalb von Power BI
Es gibt verschiedene Möglichkeiten, REST abzurufen. Ich erkläre hier zwei davon.
PowerShell
Bei einer Installation mit wenig Platzbedarf wird PowerShell verwendet. Mit diesem Befehl können Sie eine REST-Anforderung senden und das Ergebnis abrufen:
Invoke-RestMethod -Uri <URL> -Body (‘{“systemId”: “it-logix”, “apiToken”: “abcd”}’) -Method POST
SoapUI
Ich finde ein Nicht-Befehlszeichen-Tool, wie zum Beispiel SoapUI oder Postman, praktischer.
Mit SoapUI konnte ich nachweisen, dass der REST-Service wie erwartet funktioniert. Im zweiten Screenshot auf der rechten Seite sehe ich die aktuellen Daten, welche vom REST-Service zurückgegeben wurden.
Aber warum sollte Power BI trotzdem eine Fehlermeldung generieren?
Mit Fiddler herausfinden, was hinter den Kulissen von Power BI passiert
Als ich die Fehlermeldung sah, war meine erste Vermutung, dass etwas mit dem Anforderungsheader in Power Query nicht stimmt. Um Licht ins Dunkle zu bringen, benutzte ich Fiddler. Fiddler verknüpft sich mit dem gesamten HTTP-Verkehr auf Ihrem Computer und macht ihn für Sie sichtbar, damit Sie ihn analysieren können.
Der Power BI-Verkehr ist im Prozess microsoft.mashup zu finden.
Zu meiner Verwunderung stellte ich fest, dass Power BI den REST-Service erfolgreich aufgerufen hat, einschliesslich des Abrufs der korrekten Daten, ähnlich wie in SoapUI. Aber warum sollte Power BI trotzdem eine Fehlermeldung generieren?
Vergleichen Sie mit einem generischen REST-Service und lösen Sie das Rätsel
Wie immer in einem Debugging-Prozess ist es hilfreich ein zweites Beispiel zu haben, um zu überprüfen, ob ein Fehler generisch oder spezifisch ist. Dafür benutzte ich JSON Placeholder. Hier hat der Datenimport nach Power BI wunderbar funktioniert. Wieder mit Fiddler habe ich mir den Antwortheader angesehen. Ich habe den Header des generischen Services mit demjenigen in meinem Projekt verglichen. Sehen Sie es?
Schliesslich haben wir den REST-Service-Entwickler gebeten, den Header, welcher mit einem Apostroph beginnt, zu löschen und plötzlich funktionierte es in Power BI :-).
(Dieser Beitrag wurde von meinem Englischen Blog hier übernommen und ins Deutsche übersetzt)