【问题标题】:Consuming web services in VB.NET在 VB.NET 中使用 Web 服务
【发布时间】:2011-01-18 20:07:25
【问题描述】:

我是第一次在 .NET 中测试 Web 服务。我快到了,但我似乎无法使用 Web 服务。我知道这篇文章与该网站上大约 5-6 篇其他文章相似,但我已经查看了它们,但仍然无法正确理解语法。

到目前为止,我有: - 创建一个创建目录的简单 Web 服务 - 在开发环境中工作,但在现场服务器上工作时遇到了一些问题 -我可以打开“自动”生成的 .NET we service 页面。 - 添加了 Web 服务参考 - 现在可以在我的解决方案资源管理器和智能感知中查看参考。

更新: 以下是 Web 服务本身的链接: http://67.78.188.50/Jservices/Service1.asmx

Web 服务接受一个字符串(目录名称,例如 /test/directory)。但是,当我输入 Web 引用 (ServiceReference1) 的名称时 - 我没有得到我期望的方法...

这是我对 ServiceReference1 对象的选择...

ServiceReference1.makeDirRequest
ServiceReference1.makeDirRequestBody
ServiceReference1.makeDirResponse
ServiceReference1.makeDirResponseBody
ServiceReference1.Service1Soap
ServiceReference1.Service1SoapChannel
ServiceReference1.Service1SoapClient

【问题讨论】:

  • 约翰·桑德斯,如果你没有什么好说的,那就什么都别说:)
  • 如果您的服务中公开了 WebMethods,您可以调用它们。您的服务上是否有任何具有 [WebMethod()] 属性的方法?
  • 是的,makeDir 是使用该属性的公开 Web 方法。这是我似乎无法理解的“调用”的语法。调用语句会是什么样子?
  • 所以从你所说的应该是 createDir.makeDir(params...)
  • @cinqoTimo:我什至不记得我说了什么。一定是这样的,您是否查看过有关使用 Web 服务的基本文档,并且您是否知道除非您别无选择,否则您应该使用 WCF?我有一篇博客文章展示了如何使用 Web 服务,但它位于 johnwsaundersiii.spaces.live.com 上,我无法在工作中访问它,因此您必须查找它。

标签: .net vb.net web-services


【解决方案1】:

通过,你没有发布足够的代码来看看你做了什么

我强烈建议您使用 WCF

鉴于您的样本名称已得到证实,您需要

Dim service As New ServiceReference1.Service1SoapClient
service.makeDir("some val")

下载网络上的众多示例之一(codeproject 上有很多示例)并首先让示例工作。如果你不能让它去,那么你的 Windows 安装有其他问题

【讨论】:

    【解决方案2】:

    我不确定makeDirRequest 是不是服务 - 这听起来像一个消息。在该命名空间中寻找另一个继承自WebService 的类型(如果幸运,可能以“服务”或“客户端”结尾,但最终根据您在使用“添加网络引用”等时键入的内容命名)。

    这个应该有你的服务方法作为公共方法。


    看到服务后,我预计问题是您添加的是 service-reference (WCF / 3.0) 而不是 web-reference (2.0)。如果您的目标是 3.0 / 3.5,您可以使用“高级...”=>“添加 Web 引用”选项添加 web-reference (在“添加服务参考”对话框中)。然后您可以使用(其中WebReference 是您在添加引用时命名的任何内容):

    Using client As WebReference.Service1 = New WebReference.Service1
        Dim foo As String = "foo"
        client.makeDir(foo)
    End Using
    

    如果您改为使用 WCF 服务引用,则名称往往会包含“Soap”开销(其中ServiceReference1 是您在添加引用时命名的任何名称):

    Using client As ServiceReference1.Service1SoapClient = New ServiceReference1.Service1SoapClient
        Dim foo As String = "foo"
        client.makeDir(foo)
    End Using
    

    不管怎样,它应该是一样的。

    【讨论】:

    • 谢谢 Marc - 我添加了更多关于我所看到的信息。它与人们发布的所有文章有所不同,不知道为什么......
    • 特别是部分>>您可以使用“高级...”=>“添加Web引用”选项添加Web引用
    【解决方案3】:

    在 .NET 应用程序中使用 Web 服务

    http://articles.techrepublic.com/5100-10878_11-5768122.html

    创建和使用 Web 服务 - 操作系统、软件和网络...

    http://www.extremetech.com/article2/0,2845,11511,00.asp

    从 Win Forms 应用程序使用 Web 服务 - CodeProject

    http://www.codeproject.com/KB/webservices/cpwebserviceconsumer.aspx

    【讨论】:

      【解决方案4】:

      查看How to Consume a Web Service 看看它是否对您有帮助。该示例使用 C# 编写,但您应该会发现它很容易翻译。

      【讨论】:

      • @John Saunders - 谢谢约翰,我确实找到了你的文章,这对初学者很有帮助。我需要了解有关 WCF 的更多信息。我知道它将成为 MS 首选的 Web 服务平台,但我不了解它的机制。这是一个非常简单的服务,所以我不打算将它移植到 WCF,因为它已经在工作,但我将继续使用 WCF。谢谢..
      • @cinqoTimo:我很高兴它有帮助。顺便说一句,它不会“成为”MS 的首选平台。三年多来,它一直是首选平台。 ASMX Web 服务现在被视为“遗留技术”,不应用于新的开发。
      猜你喜欢
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多