2017-10-05 6 views
0

Ich habe WSO2 EI 6.1.1 installiert. Ich habe einen HTTP-Proxy erstellt und ich erstelle eine Sequenz, die bestimmte Werte aus der Anfrage erhält und sie über einen Java Class-Vermittler verarbeitet. Ich habe erfolgreich die Parameter von der URL in einem Eigenschaftsmediator erhalten, indem ich den Ausdruck als $url:token definiere.Synapse XPath Variablen Referenz

Ich versuche, auch die HTTP-Methode (Get, Post, Put ...) und den Körper der Anfrage zu erhalten, aber ich kann nicht die richtigen XPath-Variablen finden, die sie definieren.

Dies ist ein Beispiel für eine Anfrage I aufnehmen möchten (I PUT wollen und die JSON-Daten)

PUT path?token=aaaa HTTP/1.1 
Content-Length: 28 
Host: xx.xx.xx.xx 
Content-Type: application/json 

{ 
"id": 14, 
"value": "+02" 
} 

Es scheint, dass die Werte in die $ trp und $ body Objekte realted sind, aber ich habe nicht in der Lage, einen Hinweis zu finden, wie man sie erhält.


UPDATE:

definieren $ Körper als expresion gibt mir den folgenden Inhalt:

<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/> 
+0

Ist dir klar, dass XPath für Knoten Auswahl innerhalb von XML ist? – kjhughes

+0

Ich bin mir nicht sicher, wie ich zu diesen Daten kommen kann. Wie ich verstehe, sind die Werte, die ich suche, im XML-Format in den Daten, die in der Anfrage ausgetauscht werden. – jordi

+0

Dokumentation beschreibt einige xpath-Variablen, wie $ trp und $ body (Transport anjd body), die die Daten enthalten sollen, aber ich konnte sie nicht extrahieren. – jordi

Antwort

1

diese versuchen.

Körper:

<property name="payload" expression="$body"/> 

HTTP Verb:

<property name="verb" expression="$axis2:HTTP_METHOD"/> 

oder

<property name="verb" expression="$ctx:HTTP_METHOD"/> 
+0

Es funktioniert für die Methode (Achse, nicht die letzte), aber beim Anfordern des Körpers bekomme ich nur . Keine Spur des JSON-Inhalts in der Anforderung – jordi

+0

Der Textkörper kann im Java-Klassenmediator vollständig abgerufen werden: reqBody = context.getEnvelope(). GetBody(). ToString(); – jordi

Verwandte Themen