在VB.NET中使用第三方API

时间:2011-03-17 15:23:30

标签: asp.net vb.net api

我知道这可能是一个简单的答案,或者至少对大多数人来说,但是当我自己尝试或通过我查找过的各种资源时,我无法到达任何地方。我很确定我只是在寻找错误的术语或短语以获得我的答案。

这是我的问题:

我正在使用ASP / VB.NET来构建这种集成。 Visual Studio 2008.我之前曾在此处询问有关API集成的问题,并利用该信息成功执行后续步骤。由于此API的编写方式不同,我可能无法正确掌握相应的功能。

一家公司给了我几个.ASMX门户地址。我将这些添加到我的服务引用中。我可以在对象浏览器中成功查看对象并查看所有过程等,但是从这里开始我无法正确使用任何对象。我尝试根据上一个API问题和建议复制集成:Connecting to an API offered by a Company。当我试图使用一个对象或只是将一个字段与我脚本上的某个东西联系起来时,我不断收到错误。

例如:

Dim A as New API.AddFunction

A.AccountNo =“123”

运行页面时: 你调用的对象是空的。

这里只有一个.ASMX我被给了。我不能再发布了,直到我获得提供者的许可,我道歉。

http://cert1.tpayment.com:14935/Terminal.asmx

无论如何,我的问题的根源是如何正确地与这个API接口?响应者需要哪些信息,以便我能更多地澄清这个问题?可以理解的是,在共享更多信息之前,您无法猜测问题。有没有我可以在线阅读的入门书?

1 个答案:

答案 0 :(得分:1)

您正在寻找的是XML Web服务或SOAP Web服务。这将有助于您进一步查找有关如何使用此类API的信息。具体来说,您的任务是“使用ASP.NET使用XML Web服务”。

通过快速查看您提供的示例Web服务,它看起来更易于管理。但是,有一件事你必须始终记住,Web服务是在“请求 - 响应”的基础上运行的,即使它在您将其作为服务引用添加到项目时有点隐藏,并且它开始看起来像只有普通类的方法和属性。

这是一个让你入门的简单例子。假设您的aspx页面上有一个按钮“Button1”和一个标签“Label1”,并且您将示例服务添加为名称空间为“Terminal”的服务引用。这是按钮点击事件的一个小服务器端代码:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim SoapClient As New Terminal.TerminalSoapClient
    Dim Credentials As New Terminal.OnBoardCredentials
    Dim DataStructure As New Terminal.TerminalDataStructure
    Dim ErrorMessages() As Terminal.OBAErrorMessage
    Dim result As Boolean

    Credentials.UserName = "username"
    Credentials.PassWord = "password"

    DataStructure.AccountNo = "123"
    DataStructure.TerminalID = "123"

    result = SoapClient.Add(Credentials, DataStructure, ErrorMessages)

    Label1.Text = result.ToString & "; " & ErrorMessages(0).ErrorCode & " : " & ErrorMessages(0).ErrorMessage
End Sub

如您所见,您可以开始使用Web服务,您需要一个SOAP客户端。客户端将在示例服务中公开服务的方法,例如“AddTerminal”。 然后你需要把这个操作的参数放在一起,在AddTerminal的情况下是“OnBoardCredentials”,“terminal”(由通用的TerminalDataStructure类表示)和“ErrorMessage”。另请注意,此特定操作需要一个ErrorMessages数组因为Web服务可以在单个响应中返回多个。 一旦指定了每个参数的属性,就可以调用该操作(即发送请求)并使用返回的值(即响应)。 从技术上讲,此特定操作的响应包含Add操作的总体结果为boolean以及错误消息(如果有)。但是,只有整个结果由TerminalSoapClient.Add操作返回,而错误消息将添加回您的OBAErrorMessage数组。

最后,出于演示目的,我将结果显示回页面上的标签。当我尝试它时,我得到了

  

FALSE; 13000:登录时出错

因为我没有有效的凭据登录服务。

虽然非常粗糙但我希望这个例子有助于你开始。