|
@ -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);
|
|
|
}
|