Folgende Schritte sind zu tun:
1. Erstellen einer One Way Receive Location vom Type WCF-Custom; dort als URI die gewünschte URL, z.B. localhost/JSONReceive/POSTEndpoint.svc angeben.
2. Unter „Binding“ webHttpBinding auswählen:
3. Unter „Behavior“ als EndpointBehavior „webHttp“ hinzugefügt werden; dort kann man bei Bedarf die Hilfe aktivieren, damit unter localhost/JSONReceive/POSTEndpoint.svc/help der Endpunkt zu sehen ist:
4. Für die BizTalk Host Usergruppe muss in der Kommandozeile das URLACL setzen, damit die URL für die Usergruppe reserviert wird:
netsh http add urlacl url=http://+:80/JSONReceive/POSTEndpoint.svc user="<GruppenName>"
5. Der Endpunkt sollte jetzt unter localhost/JSONReceive/POSTEndpoint.svc/TwoWayMethod JSON entgegennehmen.
Aus dem JSON wird in der Receive Location XML, standardmäßig mit dem Rootknoten „root“. Im Folgenden Screenshot ist zu sehen, wie der Request auf der rechten Seite aussieht und welches XML dann im BizTalk ankommt:
Da der Rootknoten wenig aussagekräftig ist und keinen Namespace enthält, sollte jetzt eine Pipeline benutzt werden, die den Rootknoten umbenennt und einen Namespace hinzufügt.
Hierbei fiel uns auf, dass die Pipeline “ESB Add Namespace and Remove Namespace” leider einen Encoding-Fehler hat, sodass Sonderzeichen “öäüß” als Fragezeichen übertragen werden.
Stattdessen sollte man kann man eine eigene Pipeline schreiben; als Vorlage dient dazu www.codeproject.com/Articles/146182/Change-Namespace-of-a-Message-in-a-Custom-Pipeline.
Folgende Blogposts haben uns dabei geholfen:
- „Receive JSON with BizTalk using WCF webHTTP with XML Conversion, No Code Required” von Thomas Canter (https://phidiax.com/blog/post/receive-json-with-biztalk-using-wcf-webhttp-with-xml-conversion-no-code-required)
- „REST Start Kit for BizTalk Server” von Mikael Håkansson (http://blogical.se/blogs/mikael/archive/2012/05/28/rest-start-kit-for-biztalk-server.aspx)
Hilko Krüger (11/7/2017)