| 
					
				 | 
			
			
				@ -1,6 +1,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package camel.gateway.processor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.core.JsonGenerator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.core.JsonParser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.databind.node.ObjectNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.fasterxml.jackson.dataformat.xml.XmlMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.camel.Exchange; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.camel.Processor; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -17,20 +20,50 @@ import javax.xml.soap.SOAPBody; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.xml.soap.SOAPException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.xml.soap.SOAPMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.StringReader; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.io.StringWriter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.LinkedHashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Component("wsProcessor") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class WsProcessor implements Processor { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private XmlMapper xmlMapper = new XmlMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ObjectMapper objectMapper = new ObjectMapper(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void process(Exchange exchange) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        MessageContentsList args = exchange.getIn().getBody(MessageContentsList.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("api", args.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("param", args.get(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String xmlParam = args.get(1).toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String rootName = parseXMLDocument(xmlParam).getDocumentElement().getLocalName();//获取根节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectNode param = xmlMapper.readValue(xmlParam, ObjectNode.class);//解析参数内容 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        ObjectNode paramNode = objectMapper.createObjectNode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        paramNode.set(rootName, param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("param", paramNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("timestamp", args.get(2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("v", args.get(3)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("appKey", args.get(4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        exchange.getOut().setHeader("sign", args.get(5)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public  String convertXmlToJson(String xml) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        StringWriter w = new StringWriter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JsonParser jp = xmlMapper.getFactory().createParser(xml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JsonGenerator jg = objectMapper.getFactory().createGenerator(w); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            while (jp.nextToken() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                jg.copyCurrentEvent(jp); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jp.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            jg.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return w.toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    //webservice 接口请求返回 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -41,7 +74,9 @@ public class WsProcessor implements Processor { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            Object errorCode = exchange.getIn().getHeader("errorCode"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (errorCode!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //错误信息返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<Object, Object> errorMap = objectMapper.readValue(errorCode.toString(),Map.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                Map<Object, Object> errorMap = objectMapper.readValue(errorCode.toString(),Map.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                LinkedHashMap<Object, Object> errorMap = new LinkedHashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                errorMap.put("errorCode",errorCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String xmlResponse = xmlMapper.writeValueAsString(errorMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return createDefaultSoapMessage(xmlResponse); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 |