两个java web服务间SoapMessage对象的传送
两个java web服务间SoapMessage对象的传递
客户端代码:
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; } }