use of javax.xml.soap.SOAPMessage in project camel by apache.
the class SoapTargetBean method invokeSoapMessage.
public SOAPMessage invokeSoapMessage(SOAPMessage request) {
SOAPMessage response = null;
try {
SOAPBody body = request.getSOAPBody();
Node n = body.getFirstChild();
while (n.getNodeType() != Node.ELEMENT_NODE) {
n = n.getNextSibling();
}
if (n.getLocalName().equals(sayHi.getLocalPart())) {
response = sayHiResponse;
} else if (n.getLocalName().equals(greetMe.getLocalPart())) {
response = greetMeResponse;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return response;
}
use of javax.xml.soap.SOAPMessage in project quickstarts by jboss-switchyard.
the class SoapAttachmentClient method main.
public static void main(String[] args) throws Exception {
String port = System.getProperty("org.switchyard.component.soap.client.port", "8080");
SOAPMessage response = sendMessage("http://localhost:" + port + "/soap-attachment/ImageServiceService");
SOAPUtil.prettyPrint(response, System.out);
@SuppressWarnings("unchecked") Iterator<AttachmentPart> iterator = response.getAttachments();
AttachmentPart ap = iterator.next();
System.out.println("Response attachment: " + ap.getContentId() + " with content type " + ap.getContentType());
}
use of javax.xml.soap.SOAPMessage in project quickstarts by jboss-switchyard.
the class SoapAttachmentTest method testSwitchYardWebService.
@Test
public void testSwitchYardWebService() throws Exception {
SOAPMessage response = SoapAttachmentClient.sendMessage(SWITCHYARD_WEB_SERVICE);
Assert.assertTrue(response.getAttachments().hasNext());
}
use of javax.xml.soap.SOAPMessage in project openhab1-addons by openhab.
the class Tr064Comm method setTr064Value.
/***
* Sets a parameter in fbox. Called from event bus
*
* @param request config string from itemconfig
* @param cmd command to set
*/
public void setTr064Value(String request, Command cmd) {
// extract itemCommand from request
String[] itemConfig = request.split(":");
// command is always first
String itemCommand = itemConfig[0];
// search for proper item Mapping
ItemMap itemMap = determineItemMappingByItemCommand(itemCommand);
// determine which url etc. to connect to for accessing required value
Tr064Service tr064service = determineServiceByItemMapping(itemMap);
// construct soap Body which is added to soap msg later
// holds data to be sent to fbox
SOAPBodyElement bodyData = null;
try {
MessageFactory mf = MessageFactory.newInstance();
// empty message
SOAPMessage msg = mf.createMessage();
// std. SAOP body
SOAPBody body = msg.getSOAPBody();
// header
QName bodyName = new QName(tr064service.getServiceType(), itemMap.getWriteServiceCommand(), "u");
// for
// body
// element
bodyData = body.addBodyElement(bodyName);
// only if input parameter is present
if (itemConfig.length > 1) {
// additional parameter to set e.g. id of TAM to set
String dataInValueAdd = itemConfig[1];
// name of additional para to set
QName dataNode = new QName(itemMap.getWriteDataInNameAdditional());
SOAPElement beDataNode = bodyData.addChildElement(dataNode);
// add value which should be set
beDataNode.addTextNode(dataInValueAdd);
}
// convert String command into numeric
String setDataInValue = cmd.toString().equalsIgnoreCase("on") ? "1" : "0";
// service specific node name
QName dataNode = new QName(itemMap.getWriteDataInName());
SOAPElement beDataNode = bodyData.addChildElement(dataNode);
// add data which should be requested from fbox for this service
beDataNode.addTextNode(setDataInValue);
logger.debug("SOAP Msg to send to FritzBox for setting data: {}", soapToString(msg));
} catch (Exception e) {
logger.error("Error constructing request SOAP msg for setting parameter. {}", e.getMessage());
logger.debug("Request was: {}. Command was: {}.", request, cmd.toString());
}
if (bodyData == null) {
logger.error("Could not determine data to be sent to FritzBox!");
return;
}
// construct entire msg with body element
SOAPMessage smTr064Request = constructTr064Msg(bodyData);
// needed to
String soapActionHeader = tr064service.getServiceType() + "#" + itemMap.getWriteServiceCommand();
// be sent
// with
// request
// (not in
// body ->
// header)
SOAPMessage response = readSoapResponse(soapActionHeader, smTr064Request, _url + tr064service.getControlUrl());
if (response == null) {
logger.error("Error retrieving SOAP response from FritzBox");
return;
}
logger.debug("SOAP response from FritzBox: {}", soapToString(response));
// Check if error received
try {
if (response.getSOAPBody().getFault() != null) {
logger.error("Error received from FritzBox while trying to set parameter");
logger.debug("Soap Response was: {}", soapToString(response));
}
} catch (SOAPException e) {
logger.error("Could not parse soap response from FritzBox while setting parameter. {}", e.getMessage());
logger.debug("Soap Response was: {}", soapToString(response));
}
}
use of javax.xml.soap.SOAPMessage in project openhab1-addons by openhab.
the class Tr064Comm method getTr064Value.
/***
* Fetches a specific value from FritzBox
*
*
* @param request string from config including the command and optional parameters
* @return parsed value
*/
public String getTr064Value(String request) {
String value = null;
// extract itemCommand from request
String[] itemConfig = request.split(":");
// command is always first
String itemCommand = itemConfig[0];
// search for proper item Mapping
ItemMap itemMap = determineItemMappingByItemCommand(itemCommand);
if (itemMap == null) {
logger.warn("No item mapping found for {}. Function not implemented by your FritzBox (?)", request);
return "";
}
// determine which url etc. to connect to for accessing required value
Tr064Service tr064service = determineServiceByItemMapping(itemMap);
// construct soap Body which is added to soap msg later
// holds data to be sent to fbox
SOAPBodyElement bodyData = null;
try {
MessageFactory mf = MessageFactory.newInstance();
// empty message
SOAPMessage msg = mf.createMessage();
// std. SAOP body
SOAPBody body = msg.getSOAPBody();
// header
QName bodyName = new QName(tr064service.getServiceType(), itemMap.getReadServiceCommand(), "u");
// for body
// element
bodyData = body.addBodyElement(bodyName);
// only if input parameter is present
if (itemConfig.length > 1) {
String dataInValue = itemConfig[1];
// service specific node name
QName dataNode = new QName(itemMap.getReadDataInName());
SOAPElement beDataNode = bodyData.addChildElement(dataNode);
// if input is mac address, replace "-" with ":" as fbox wants
if (itemMap.getItemCommand().equals("maconline")) {
dataInValue = dataInValue.replaceAll("-", ":");
}
// add data which should be requested from fbox for this service
beDataNode.addTextNode(dataInValue);
}
logger.trace("Raw SOAP Request to be sent to FritzBox: {}", soapToString(msg));
} catch (Exception e) {
logger.error("Error constructing request SOAP msg for getting parameter. {}", e.getMessage());
logger.debug("Request was: {}", request);
}
if (bodyData == null) {
logger.error("Could not determine data to be sent to FritzBox!");
return null;
}
// construct entire msg with body element
SOAPMessage smTr064Request = constructTr064Msg(bodyData);
// needed to be
String soapActionHeader = tr064service.getServiceType() + "#" + itemMap.getReadServiceCommand();
// sent with
// request (not
// in body ->
// header)
SOAPMessage response = readSoapResponse(soapActionHeader, smTr064Request, _url + tr064service.getControlUrl());
logger.trace("Raw SOAP Response from FritzBox: {}", soapToString(response));
if (response == null) {
logger.error("Error retrieving SOAP response from FritzBox");
return null;
}
// check if special "soap value parser" handler for extracting SOAP value is defined. If yes, use svp
if (itemMap.getSoapValueParser() == null) {
// extract dataOutName1 as default, no handler used
NodeList nlDataOutNodes = response.getSOAPPart().getElementsByTagName(itemMap.getReadDataOutName());
if (nlDataOutNodes != null && nlDataOutNodes.getLength() > 0) {
// extract value from soap response
value = nlDataOutNodes.item(0).getTextContent();
} else {
logger.error("FritzBox returned unexpected response. Could not find expected datavalue {} in response.", itemMap.getReadDataOutName());
logger.debug(soapToString(response));
}
} else {
logger.debug("Parsing response using SOAP value parser in Item map");
// itemMap is
value = itemMap.getSoapValueParser().parseValueFromSoapMessage(response, itemMap, request);
// passed for
// accessing
// mapping in
// anonymous
// method
// (better way
// to do??)
}
return value;
}
Aggregations