客户端代码:
try
{
// 创建连接对象并呼叫AP
SOAPConnection conn = SOAPConnectionFactory.newInstance().createConnection();
SOAPMessage resMsg = conn.call(reqMsg, apUrl);
// 获取AP的响应消息
String msg = "";
if (null == resMsg)
{
msg = getResponse(servletContext, currOperaId, 0);
}
else
{
// 接收对方返回的SOAPMessage对象并转成字符串
Document doc = resMsg.getSOAPPart().getEnvelope().getOwnerDocument();
StringWriter output = new StringWriter();
TransformerFactory.newInstance()
.newTransformer()
.transform(new DOMSource(doc), new StreamResult(output));
msg = output.toString();
}
// 移除servlet上下文中存储的消息
servletContext.removeAttribute(id);
return msg;
}
catch (Exception ex)
{
logger.error(Global.LOG_EXCEPTION_NAME, ex);
return "";
}
服务器端代码:
/**
* <创建UploadResponse事件的字符串>
* <功能详细描述>
* @param bool 1成功0失败
* @return
* @see [类、类#方法、类#成员]
*/
public static String createUploadResponse(int bool)
{
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.append("<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:cwmp=\"urn:dslforum-org:cwmp-1-1\">");
sb.append("<SOAP-ENV:Header><cwmp:ID>1484</cwmp:ID></SOAP-ENV:Header>");
sb.append("<SOAP-ENV:Body SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">");
if (1 == bool)
{
sb.append("<cwmp:UploadResponse><Status>0</Status><StartTime>");
sb.append(Global.getCurrentTime());
sb.append("</StartTime><CompleteTime>");
sb.append(Global.getCurrentTime());
sb.append("</CompleteTime>");
sb.append("</cwmp:UploadResponse>");
}
else
{
sb.append("<SOAP-ENV:Fault><faultcode>Client</faultcode><faultstring>CWMP fault</faultstring>");
sb.append("<detail><cwmp:Fault><FaultCode>9011</FaultCode><FaultString>Upload failure</FaultString></cwmp:Fault>");
sb.append("</detail></SOAP-ENV:Fault>");
}
sb.append("</SOAP-ENV:Body></SOAP-ENV:Envelope>");
return sb.toString();
}
/**
* <把soap字符串格式化为SOAPMessage>
* <功能详细描述>
* @param soapString
* @return
* @see [类、类#方法、类#成员]
*/
public static SOAPMessage formartSoapString(String soapString)
{
MessageFactory msgFactory;
try
{
msgFactory = MessageFactory.newInstance();
SOAPMessage reqMsg =
msgFactory.createMessage(new MimeHeaders(),
new ByteArrayInputStream(soapString.getBytes(Charset.forName("UTF-8"))));
reqMsg.saveChanges();
return reqMsg;
}
catch (Exception e)
{
logger.error(EXCEPTION_NAME, e);
return null;
}
}