使用 SoapJaxbDataFormat 编组构造 SOAP 请求
Construct SOAP Request using SoapJaxbDataFormat marshal
正在尝试使用 SoapJaxbDataFormat 编组方法构建 soap 请求。
路线:
private SoapJaxbDataFormat soap = new SoapJaxbDataFormat("<manage order generated package path>");
public void configure() throws Exception {
soap.setVersion("1.2");
from("direct:" + "invokeSoapServiceRoute")
.process(new constructManageOrderRequestObject())
.setHeader(Exchange.SOAP_ACTION, simple(MANAGE_ORDER_SOAP_ACTION))
.setHeader(Exchange.HTTP_METHOD, simple(HTTP_METHOD_POST))
.setHeader(Exchange.CONTENT_TYPE, constant("application/soap+xml;charset=UTF-8"))
.marshal(soap) //request
.log(LoggingLevel.DEBUG, LOG, "request ===========>${body}")
.end();
}
constructManageOrderRequestObject 处理器创建 ManageOrderRequest 对象(class 在构建期间使用 maven 从 WSDL 生成)并设置其所有不同的属性(其他引用)并将对象设置为交换主体。当我使用上面的代码编组正文时,它会记录以下输出 -
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Envelope xmlns:ns0="http://www.w3.org/2003/05/soap-envelope">
<ns0:Body>
<ns1:manageOrderRequest xmlns:ns1="http://cap.xe.com/xsd/ManageOrder/2010/06/01">com.xe.cap.ManageOrderRequest@40c3dcba</ns1:manageOrderRequest>
</ns0:Body>
</ns0:Envelope>
它没有转换 ManageOrderRequest 对象 xml,而是在 soap-body 中使用它的对象引用。
谁能帮我解决这个问题。
我找到了解决方案:
需要使用 soap.setContextPath("Package name")
设置上下文路径
正在尝试使用 SoapJaxbDataFormat 编组方法构建 soap 请求。 路线:
private SoapJaxbDataFormat soap = new SoapJaxbDataFormat("<manage order generated package path>");
public void configure() throws Exception {
soap.setVersion("1.2");
from("direct:" + "invokeSoapServiceRoute")
.process(new constructManageOrderRequestObject())
.setHeader(Exchange.SOAP_ACTION, simple(MANAGE_ORDER_SOAP_ACTION))
.setHeader(Exchange.HTTP_METHOD, simple(HTTP_METHOD_POST))
.setHeader(Exchange.CONTENT_TYPE, constant("application/soap+xml;charset=UTF-8"))
.marshal(soap) //request
.log(LoggingLevel.DEBUG, LOG, "request ===========>${body}")
.end();
}
constructManageOrderRequestObject 处理器创建 ManageOrderRequest 对象(class 在构建期间使用 maven 从 WSDL 生成)并设置其所有不同的属性(其他引用)并将对象设置为交换主体。当我使用上面的代码编组正文时,它会记录以下输出 -
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Envelope xmlns:ns0="http://www.w3.org/2003/05/soap-envelope">
<ns0:Body>
<ns1:manageOrderRequest xmlns:ns1="http://cap.xe.com/xsd/ManageOrder/2010/06/01">com.xe.cap.ManageOrderRequest@40c3dcba</ns1:manageOrderRequest>
</ns0:Body>
</ns0:Envelope>
它没有转换 ManageOrderRequest 对象 xml,而是在 soap-body 中使用它的对象引用。
谁能帮我解决这个问题。
我找到了解决方案:
需要使用 soap.setContextPath("Package name")
设置上下文路径