/SOAP java.xml.soap HTTP Header hinzufügen
MudGuard
- java
0 MudGuard
Hi,
ich habe ein Problem mit javax.xml.soap:
Ein soap-Request braucht (der Server verlangt es) einen bestimmten HTTP-Header ("SOAPAction" muß einen definierten Wert haben).
Egal was ich anstelle, der soap-Request geht über die Leitung, aber der SOAPAction-Header hat immer den Wert ""
Folgender Code
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
SOAPMessage soapRequest = messageFactory.createMessage();
soapPart.setContent(new org.jdom.transform.JDOMSource(doc)); //doc ist ein Document, der Teil paßt!
MimeHeaders hd = soapRequest.getMimeHeaders();
/*
egal welche der folgenden add/set Header Methoden ich nutze, der SOAPAction
auch egal, ob ich jeweils die remove...Header drin habe oder nicht.
- der SOAPAction-Header wird als "" übertragen:
*/
//hd.removeHeader("SOAPAction");
//hd.addHeader("SOAPAction", "\"http://test"");
//hd.addHeader("SOAPAction", "http://test");
//hd.setHeader("SOAPAction", "\"bla\"");
//hd.setHeader("SOAPAction", "blubb");
//soapPart.removeMimeHeader("SOAPAction");
//soapPart.setMimeHeader("SOAPAction", "\"soapPartHeadertest\"");
//soapPart.addMimeHeader("SOAPAction", "\"addMimetest\"");
//soapPart.setMimeHeader("SOAPAction", "soapPartHeadertest123");
//soapPart.addMimeHeader("SOAPAction", "addMimetest123");
soapRequest.saveChanges();
SOAPMessage soapResponse = soapConnection.call(soapRequest, theUrl); //funktioniert im Prinzip, d.h. der Request geht auf die Leitung
Wireshark zeigt mir an, daß folgende Header über die Leitung gehen (Servername/URL hab ICH anonymisiert - die sind ja auch nicht das Problem, der Request kommt beim Server an, wird auch beantwortet, aber mit sowas wie "SOAPAction: wrong value" ):
POST /correctUrlForTheRequest HTTP/1.0\r\n
Content-Type: text/xml; charset=utf-8\r\n
Accept: application/soap+xml, application/dime, multipart/related, text/*\r\n
User-Agent: Axis/1.1\r\n
Host: testserver\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
SOAPAction: ""\r\n
Content-Length: 2218\r\n
\r\n
Was mache ich falsch?
Es muß doch irgendeinen Weg geben, im SOAPAction Header den von mir gewünschten Wert zu übertragen ...
cu,
Andreas
Hi,
ich habe ein Problem mit javax.xml.soap:
Ein soap-Request braucht (der Server verlangt es) einen bestimmten HTTP-Header ("SOAPAction" muß einen definierten Wert haben).
Egal was ich anstelle, der soap-Request geht über die Leitung, aber der SOAPAction-Header hat immer den Wert ""
Ok, hab das ganze umgangen, indem ich auf das soap-Zeugs verzichtet hab und einen normalen HTTP-Request (HTTPUrlConnection) gemacht hab ...
cu,
Andreas