WCF 服务通过 SOAP 1.1 接受 xCBL XML
WCF service to accept xCBL XML via SOAP 1.1
我的任务是开发一个 Web 服务端点来接受来自客户中间件系统的采购订单。
如何创建一个 WCF 服务来通过 SOAP 1.1 接受这个给定的负载(例如客户)?
以下为节选
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns0:Order xmlns:ns0 = "rrn:org.xcbl:schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd">
<ns0:OrderHeader>
<ns0:OrderNumber>
<ns0:BuyerOrderNumber>3000278673</ns0:BuyerOrderNumber>
</ns0:OrderNumber>
<ns0:OrderIssueDate>2012-03-06T14:04:09</ns0:OrderIssueDate>
<ns0:OrderReferences>
<ns0:AccountCode>
<ns1:RefNum xmlns:ns1 = "rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">TEST CUSTOMER</ns1:RefNum>
</ns0:AccountCode>
<ns0:OtherOrderReferences>
<ns1:ReferenceCoded xmlns:ns1 = "rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
<ns1:ReferenceTypeCoded>DocumentNumber</ns1:ReferenceTypeCoded>
<ns1:ReferenceTypeCodedOther>3000278673</ns1:ReferenceTypeCodedOther>
<ns1:PrimaryReference>
<ns1:RefNum/>
</ns1:PrimaryReference>
<ns1:ReferenceDescription>IDoc Number</ns1:ReferenceDescription>
</ns1:ReferenceCoded>
</ns0:OtherOrderReferences>
</ns0:OrderReferences>
我试图从中创建一个 XSD 并通过它生成 类 但它失败了,因为它无法识别某些类型。
完整文档:(WSDL definition) (XCBL_PO_SOAP definition) (xCBL Schema)
我有两个问题
1.如何从中创建所需的服务接口?
或者替代
2。当供应商传输上述有效载荷时,我可以将我的 wcf 服务建模为只接受一个字符串,然后使用 LINQ 查询 XML? 当客户说他们使用 xCBL 和 SOAP 1.1 时,这是一个可行的方法?
//Example
public string SubmitPurchaseOrder(string XMLPayload){
return ProcessXmlThroughLinq(XMLPayload);
}
对于面临类似问题的任何人,请使用 svcutil.exe。
//The WSDL file(s) is in C:\test\.
svcutil.exe /t:code /serviceContract /out:"C:\test\PurchaseOrder.cs" "C:\test\*"
PS。不要担心它在 SOAP Headers 中没有任何 SOAPAction。消息 body 命名空间将向服务指示要使用的操作。
我的任务是开发一个 Web 服务端点来接受来自客户中间件系统的采购订单。
如何创建一个 WCF 服务来通过 SOAP 1.1 接受这个给定的负载(例如客户)?
以下为节选
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns0:Order xmlns:ns0 = "rrn:org.xcbl:schemas/xcbl/v4_0/ordermanagement/v1_0/ordermanagement.xsd">
<ns0:OrderHeader>
<ns0:OrderNumber>
<ns0:BuyerOrderNumber>3000278673</ns0:BuyerOrderNumber>
</ns0:OrderNumber>
<ns0:OrderIssueDate>2012-03-06T14:04:09</ns0:OrderIssueDate>
<ns0:OrderReferences>
<ns0:AccountCode>
<ns1:RefNum xmlns:ns1 = "rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">TEST CUSTOMER</ns1:RefNum>
</ns0:AccountCode>
<ns0:OtherOrderReferences>
<ns1:ReferenceCoded xmlns:ns1 = "rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd">
<ns1:ReferenceTypeCoded>DocumentNumber</ns1:ReferenceTypeCoded>
<ns1:ReferenceTypeCodedOther>3000278673</ns1:ReferenceTypeCodedOther>
<ns1:PrimaryReference>
<ns1:RefNum/>
</ns1:PrimaryReference>
<ns1:ReferenceDescription>IDoc Number</ns1:ReferenceDescription>
</ns1:ReferenceCoded>
</ns0:OtherOrderReferences>
</ns0:OrderReferences>
我试图从中创建一个 XSD 并通过它生成 类 但它失败了,因为它无法识别某些类型。
完整文档:(WSDL definition) (XCBL_PO_SOAP definition) (xCBL Schema)
我有两个问题
1.如何从中创建所需的服务接口?
或者替代
2。当供应商传输上述有效载荷时,我可以将我的 wcf 服务建模为只接受一个字符串,然后使用 LINQ 查询 XML? 当客户说他们使用 xCBL 和 SOAP 1.1 时,这是一个可行的方法?
//Example
public string SubmitPurchaseOrder(string XMLPayload){
return ProcessXmlThroughLinq(XMLPayload);
}
对于面临类似问题的任何人,请使用 svcutil.exe。
//The WSDL file(s) is in C:\test\.
svcutil.exe /t:code /serviceContract /out:"C:\test\PurchaseOrder.cs" "C:\test\*"
PS。不要担心它在 SOAP Headers 中没有任何 SOAPAction。消息 body 命名空间将向服务指示要使用的操作。