2012-12-04 55 views
0

我正在創建一個應用程序,它使用XML與SOAP Web服務進行通信。我需要一次發送多個條目。 SOAP頁面說我需要使用這樣的XML:在SOAP中發送多個條目

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <InsertArrivaliOS xmlns="http://microsoft.com/webservices/"> 
     <GuestID>long</GuestID> 
     <Key>string</Key> 
     <NumberOfGuests>int</NumberOfGuests> 
     <Table>string</Table> 
     <Note>string</Note> 
     <ArrivalDate>dateTime</ArrivalDate> 
    </InsertArrivaliOS> 
    </soap:Body> 
</soap:Envelope> 

我想發送2個InsertArrivaliOS節點。是否有可能做這樣的事情?

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <InsertArrivaliOS xmlns="http://microsoft.com/webservices/"> 
     <GuestID>long</GuestID> 
     <Key>string</Key> 
     <NumberOfGuests>int</NumberOfGuests> 
     <Table>string</Table> 
     <Note>string</Note> 
     <ArrivalDate>dateTime</ArrivalDate> 
    </InsertArrivaliOS> 
<InsertArrivaliOS xmlns="http://microsoft.com/webservices/"> 
     <GuestID>long</GuestID> 
     <Key>string</Key> 
     <NumberOfGuests>int</NumberOfGuests> 
     <Table>string</Table> 
     <Note>string</Note> 
     <ArrivalDate>dateTime</ArrivalDate> 
    </InsertArrivaliOS> 
    </soap:Body> 
</soap:Envelope> 

回答

1

您可以將InsertArrivaliOS與列表一起包裝到其他元素中。當你定義你的模式時,你可以添加另一個類型作爲一系列無界的InsertArrivaliOS元素。 讓你的xml代碼看起來像這樣:

<soap:Body> 
    <listArrival xmlns="http://example.org"> 
    <InsertArrivaliOS xmlns="http://microsoft.com/webservices/"> 
     <GuestID>long</GuestID> 
     <Key>string</Key> 
     <NumberOfGuests>int</NumberOfGuests> 
     <Table>string</Table> 
     <Note>string</Note> 
     <ArrivalDate>dateTime</ArrivalDate> 
    </InsertArrivaliOS> 
<InsertArrivaliOS xmlns="http://microsoft.com/webservices/"> 
     <GuestID>long</GuestID> 
     <Key>string</Key> 
     <NumberOfGuests>int</NumberOfGuests> 
     <Table>string</Table> 
     <Note>string</Note> 
     <ArrivalDate>dateTime</ArrivalDate> 
    </InsertArrivaliOS> 
    </listArrival> 
    </soap:Body> 

看到想法? 或者您不可能修改架構嗎?

+1

我知道一個SOAP消息每個請求只能調用一個服務器函數。如果我錯了,請糾正我。 如果你可以定義服務器端,那麼你可以做的是定義接受對象列表(一組參數)而不是一個的方法。像這裏回答。 如果您無法更改服務,那麼您可以爲您打包多個電話。 –

+0

表示同意,只有在您可以更改WS本身時纔有效。 – florent