Parcourir la source

webservice 参数为cdata类型修改

huangzhiyong il y a 8 ans
Parent
commit
2b0a3a94a1

+ 14 - 7
hos-camel2/src/main/java/camel/gateway/processor/GatewayProcessor.java

@ -12,6 +12,8 @@ import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@ -282,14 +284,19 @@ public class GatewayProcessor implements Processor {
    public String nodeValue(JsonNode node){
        Object value = null;
        switch (node.getNodeType().name()){
            case "NUMBER" : value = node.asInt();break;
            case "STRING" : value = node.asText();break;
            case "BOOLEAN" : value = node.asBoolean();break;
            case "OBJECT" : value = node.toString();break;
            default:value = "";break;
        try {
            switch (node.getNodeType().name()){
                case "NUMBER" : value = node.asInt();break;
                case "STRING" : value = node.asText();break;
                case "BOOLEAN" : value = node.asBoolean();break;
                case "OBJECT" : value = node.toString();break;
                default:value = "";break;
            }
            return URLEncoder.encode(value.toString(), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return value.toString();
        return "";
    }

+ 37 - 2
hos-camel2/src/main/java/camel/gateway/processor/WsProcessor.java

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