2009-02-24 32 views
0

有點長第三方自動之一,但是,比第一稿:)使用Web服務 - 從手工法打算使用提供WSDL

短,我們有一個小VB.net應用程序,基本上提取信息從我們的dBase中導出,然後將此信息導出到.xls文件。從這個.xls文件中,內部代理商然後手動更新第三方列表服務(維護我們當前的庫存)與其中包含的信息。這些信息非常基本,爲便於討論,包括「零件號」,「說明」和「現有數量」。

通常我們每週更新此信息一次,但是,與此房源服務新修訂的合同,現在需要一個每日更新,以保持我們的「白金」供應商的地位。

問題是手動更新此信息可能需要一段時間。因此,迫切需要一個自動化過程。我完成了大部分的基礎工作和編碼 - 達到了某個程度。因此,這個問題,因此我卡住了。

上市服務爲我們提供了下面的WSDL的:一個用於增加我們的庫存,一爲降低我們的庫存,一個用於增加庫存,一個用於去除庫存。

到現在爲止,我已經重新編程的存儲過程中產生的導出的信息。這個SP現在做一些內部的數學計算,以確定'昨天'發生的交易結果是'增加','減少','添加'還是'刪除'。然後將這些結果添加到名爲「SERVICE」的新創建列下的結果表中。然後用vb.net從dBase中提取這些新信息並導入到數據表中進行分析。

與此數據表,我現在可以遍歷每一行,看在列的「服務」,並根據包含在該單元中的信息,調用相應的Web服務。

我已經加入所有的Web引用到我的項目,創造了代理類每個Web服務。

第二個問題是,我不知道如何實際調用實際的Web服務。以下是代碼

' loads data into the 'AviationDataBaseResult.ILS_ARRAY_2' table. 
Me.ILS_ARRAY_2TableAdapter.Fill(Me.AviationDataBaseResult.ILS_ARRAY_2) 

' Start the looping process 
For Looper = 0 To RowCount - 1 
    If Me.AviationDataBaseResult.ILS_ARRAY_2.Rows(Looper).Item("Service") = _ 
     "Increase" Then 
     ' Call Appropriate Web service 
    End If 
' More If..Then's ensue, one for each service 
Next 

' More code ensues 

的小片段我意識到,這已成爲不少長篇大論,主要是因爲在任何給定的一天,我有25個FF選項卡中打開,其中沒有相互同意。添加另一個皺紋;所討論的WSDL在複雜類型中使用了很多複雜類型,而你猜對了,其他複雜類型交織在一起。我已經瀏覽了很多例子,還沒有找到一個處理複雜類型以及如何處理它們的例子。非常感謝任何幫助指引我在'去哪裏找到我需要知道'的正確方向。

如果需要任何其他信息,我會很樂意爲您提供儘可能多的,因爲我可以更多。如果我的思維過程和邏輯不適合做我需要做的事,我很樂意聽到這一點。對vb.net來說相對較新,我已經變得非常善於消費謙虛派。

謝謝你的時間。

回答

0

我必須看到實際的WSDL才能知道如何調用這些服務。但是,一般情況下,如果您將Web參考命名爲「WebRef」,並且該服務被稱爲「服務」,並且操作是「操作」,那麼您將執行以下操作:

Using svc As New WebRef.Service 
    Dim parameter As New ComplexType 
    parameter.Property1 = value1 
    parameter.Property2 = New Property2Type 
    parameter.Property2.SubProperty1 = value12 
    ' ... 
    svc.Operation(parameter) 
End Using 
0

如果您已經導入了WSDL並生成了代理,它只是實例化代理(您應該看到一個新的名稱空間,在生成代理時提示您輸入),然後調用方法。

您將不得不在您的數據和Web服務期望的類型之間執行映射,雖然單調乏味,但應該不難。