📘 Navision 2017 API Integration Guide
🌟 EMPFEHLUNG: Verwenden Sie den Endpoint
/upload_legacy_compatible für maximale Kompatibilität mit Navision 2017!
🚀 Schnellstart
Schritt 1: Token abrufen
PROCEDURE GetAuthToken() : Text
VAR
HttpClient : HttpClient;
HttpContent : HttpContent;
Response : HttpResponseMessage;
TokenText : Text;
BEGIN
// Login-Daten vorbereiten
HttpContent.WriteAsStringAsync(
'grant_type=password&username=admin&password=password123'
);
// Content-Type setzen
HttpContent.Headers.Clear();
HttpContent.Headers.Add('Content-Type', 'application/x-www-form-urlencoded');
// Request senden
IF HttpClient.Post('https://demo.digibarn.de/token', HttpContent, Response) THEN BEGIN
IF Response.IsSuccessStatusCode THEN BEGIN
Response.Content.ReadAsStringAsync(TokenText);
EXIT(ExtractTokenFromJson(TokenText));
END;
END;
END;
Schritt 2: XML-Datei hochladen
PROCEDURE UploadXmlFile(Token : Text; FilePath : Text) : Boolean
VAR
HttpClient : HttpClient;
HttpContent : HttpContent;
Response : HttpResponseMessage;
XmlContent : Text;
BEGIN
// XML-Datei lesen
XmlContent := ReadFileContent(FilePath);
// HTTP Content vorbereiten
HttpContent.WriteAsStringAsync(XmlContent);
HttpContent.Headers.Clear();
HttpContent.Headers.Add('Content-Type', 'application/xml');
// Authorization Header setzen (WICHTIG: "Bearer " mit Leerzeichen!)
HttpClient.DefaultRequestHeaders.Clear();
HttpClient.DefaultRequestHeaders.Add('Authorization', 'Bearer ' + Token);
HttpClient.DefaultRequestHeaders.Add('Accept', 'application/json');
// Request senden
IF HttpClient.Post(
'https://demo.digibarn.de/upload_legacy_compatible',
HttpContent,
Response
) THEN BEGIN
EXIT(Response.IsSuccessStatusCode);
END;
EXIT(FALSE);
END;
📍 Verfügbare Endpoints
| Endpoint |
Methode |
Beschreibung |
Navision-Kompatibilität |
/token |
POST |
JWT Token abrufen |
✅ Voll kompatibel |
/upload |
POST |
Standard multipart/form-data |
⚠️ Problematisch |
/upload-xml |
POST |
Raw XML im Body |
✅ Gut kompatibel |
/upload_legacy_compatible |
POST |
🌟 Maximale Kompatibilität |
✅✅ EMPFOHLEN |
/debug-request |
POST |
Request-Details anzeigen |
✅ Debugging-Tool |
⚠️ Häufige Probleme & Lösungen
Problem 1: "Missing boundary in multipart"
Ursache: Navision sendet Content-Type: multipart/form-data ohne boundary Parameter.
Lösung: Verwenden Sie /upload_legacy_compatible statt /upload
Problem 2: "Not authenticated"
Ursache: Token wird nicht korrekt übertragen.
Lösungen:
- Prüfen Sie das Format:
'Bearer ' + Token (mit Leerzeichen!)
- Token darf keine Zeilenumbrüche enthalten:
Token := DELCHR(Token, '=', CRLF + ' ');
- Token muss in globaler Variable gespeichert werden (nicht nur MESSAGE)
- Alternative: Token als Query Parameter:
?access_token=TOKEN
Problem 3: Token wird als MESSAGE ausgegeben, aber nicht gespeichert
Falsch:
MESSAGE(Token); // Nur zur Anzeige!
Richtig:
GlobalTokenVariable := GetTokenFromResponse(Response);
// Dann GlobalTokenVariable in nachfolgenden Requests verwenden
🔧 Debugging mit /debug-request
Der Debug-Endpoint zeigt Ihnen GENAU, was bei der API ankommt:
curl -X POST "https://demo.digibarn.de/debug-request" -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/xml" --data "<test>Hello</test>"
Die Antwort zeigt:
- ✅ Alle empfangenen Headers
- ✅ Content-Type und Body-Größe
- ✅ Vorschau der ersten 500 Zeichen
- ✅ Token-Format-Validierung
✅ Checkliste für Navision-Entwickler
- ☐ Token wird in globaler Variable gespeichert (nicht nur MESSAGE)
- ☐ Authorization Header:
"Bearer " + Token (mit Leerzeichen!)
- ☐ Token enthält keine Leerzeichen oder Zeilenumbrüche
- ☐ Content-Type Header ist gesetzt:
application/xml
- ☐ XML-Daten werden als Raw Body gesendet
- ☐ Endpoint ist
/upload_legacy_compatible
- ☐ API-URL ist korrekt (kein trailing slash)
- ☐ Firewall/Proxy lässt HTTPS-Verbindungen zu
- ☐ TLS 1.2 oder höher ist aktiviert
📊 Logs überprüfen
Die API loggt ausführlich. Überprüfen Sie die Server-Logs:
api_detailed.log - Vollständige Logs aller Requests
- Jeder Request hat eine eindeutige ID (z.B.
[LEGACY-a1b2c3d4])
- Alle Headers, Body-Größen und Verarbeitungsschritte werden geloggt
✅ Test erfolgreich?
Wenn Sie diese Dokumentation hilfreich fanden und die Integration funktioniert,
können Sie zur normalen Nutzung übergehen.
Bei weiteren Fragen: Kontaktieren Sie Ihren Administrator mit den Server-Logs!
← Zurück zur Startseite |
API Dokumentation