我的任务是开发一个Web服务端点,以接受来自客户中间件系统的采购订单。
如何通过SOAP 1.1创建一个接受此给定有效负载(例如客户)的WCF服务?
以下是摘录
<?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);
}
答案 0 :(得分:0)
对于遇到类似问题的任何人,请使用svcutil.exe。
//The WSDL file(s) is in C:\test\.
svcutil.exe /t:code /serviceContract /out:"C:\test\PurchaseOrder.cs" "C:\test\*"
PS。不要担心它在SOAP标头中没有任何SOAPAction。消息体名称空间将向服务指示要使用的操作。