0

有点长,但比初稿短:)

我们有一个小型 VB.net 应用程序,它基本上从我们的 dBase 中提取信息,然后将这些信息导出到一个 .xls 文件。从这个 .xls 文件中,内部代理然后使用其中包含的信息手动更新第三方列表服务(维护我们当前的库存)。该信息非常基本,为便于讨论,由“零件编号”、“描述”和“现有数量”组成。

通常我们每周更新一次此信息,但是,与此列表服务的新修订合同现在需要每天更新以保持我们的“白金”供应商状态。

问题是手动更新此信息可能需要相当长的时间。因此,迫切需要自动化过程。而且我已经完成了大部分基础工作和编码 - 到了一定程度。因此问题,因此我卡住了。

列表服务为我们提供了以下 WSDL:一种用于增加我们的库存,一种用于减少我们的库存,一种用于添加库存,一种用于移除库存。

到目前为止,我已经重新编写了一个生成导出信息的存储过程。该 SP 现在进行一些内部数学运算,以确定“昨天”发生的交易结果是“增加”、“减少”、“添加”还是“删除”。然后将这些结果添加到名为“SERVICE”的新创建列下的结果表中。然后使用 vb.net 从 dBase 中提取这些新信息,并将其导入数据表中进行分析。

有了这个数据表,我现在可以遍历每一行,查看“SERVICE”列,并根据该单元格中包含的信息,调用适当的 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 的新手,我已经非常擅长消费谦逊派。

谢谢你的时间。

4

2 回答 2

0

如果您已经导入了 WSDL 并生成了代理,那么只需实例化代理(您应该会看到在生成代理时提示您输入的新名称空间)然后调用方法。

您将不得不在您的数据和 Web 服务期望的类型之间执行映射,虽然很乏味,但一点也不难。

于 2009-02-24T17:20:33.377 回答
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
于 2009-02-24T17:31:22.977 回答