Achse security-header
Hallo zu erzeugen versuchen einen security-header in einem Java Axis2-Client-Programm in dem format.
<soapenv:Header>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext>
<wsse:UsernameToken>
<wsse:Username>myUsername</wsse:Username>
<wsse:Password>myPassword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
verwenden Sie den folgenden code
SOAPHeaderElement wsseSecurity = new SOAPHeaderElement(new PrefixedQName("http://schemas.xmlsoap.org/ws/2002/04/secext","Security", "wsse"));
MessageElement usernameToken = new MessageElement("", "wsse:UsernameToken");
MessageElement username = new MessageElement("", "wsse:Username");
MessageElement password = new MessageElement("", "wsse:Password");
username.setObjectValue(myProps.getProperty("username"));
usernameToken.addChild(username);
password.setObjectValue(myProps.getProperty("password"));
usernameToken.addChild(password);
wsseSecurity.addChild(usernameToken);
BookingPort bp = bsl.getBooking();
((Stub) bp).setHeader(wsseSecurity);
Leider ist es nicht die Generierung ganz das, was ich wollte und ich bekommen.
<soapenv:Header>
<wsse:Security soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
<wsse:UsernameToken xmlns:wsse="">
<wsse:Username xmlns:wsse="">myUsername</wsse:Username>
<wsse:Password xmlns:wsse="">myPassword</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
Den Dienst am anderen Ende scheint nicht zu behandeln, die zusätzlichen bits, wodurch ein Fehler
faultDetail:
{http://xml.apache.org/axis/}stackTrace:com.ctc.wstx.exc.WstxParsingException: Non-default namespace can not map to empty URI (as per Namespace 1.0 # 2) in XML 1.0 documents
at [row,col {unknown-source}]: [1,450]
Wie erstelle ich das SOAPHeader-nicht drucken Sie alle zusätzlichen leeren bits?
Cheers
- wie die soap-Header in Dienstleistungen ..bitte geben Sie den Beispiel-code me...java und axis2 1.6.7
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist die übergabe eines leeren string als erstes argument MessageElement, und Sie brauchen, um passieren
null
. Beachten Sie, dassnull
und der leere string (""
) sind nicht das gleiche in Java. Auch, Sie sind wirklich betrügen indem die Namensraum-Präfix, um die local-name (zweiten) parameter der MessageElement-Konstruktor...das ist nicht das, was es für entworfen ist. That being said, können Sie beheben das problem durch die übergabenull
als namespace (ersten) parameter. Wenn Sie versuchen, geben Sie direkt, werden Sie wahrscheinlich eine mehrdeutige Konstruktor-Fehler, so etwas wie die folgende:Ich würde auch empfehlen, die Sie verwenden Sie einen anderen web-service-engine (nicht Axis2), wenn Sie keine Wahl in der Angelegenheit.
Versuchen, diese Weg zu erstellen Sie benutzerdefinierte header mit der 1. Achse.* (Der obige code sieht nicht wie mit Axis2)