在vb2008.net上发布soap请求和显示响应?

时间:2010-02-04 00:28:38

标签: .net http soap post

我是面向对象编程的新手,所以我在这里只需要基础知识的帮助。我有一个xml字符串,我已经在一个单独的程序中测试过,并且能够正确地与我的soap服务器通信。我正在尝试在Visual Basic 2008中添加一个请求,基本上取肥皂串,将其作为http POST发送,并显示返回的xml。我基本上已经找到了所有部分(我认为),除了我不知道如何将实际的SOAP字符串应用于请求。

下面是我正在做的事情的一个示例,我意识到这不是使用XML的正确方法,因为它完全不可扩展但我只需要让基础工作现在正常工作,我将在以后正确编码。 (我正处于紧张状态,没有足够的.net经验来做到这一点)

'dim soap request strings
    Dim TestEndPoint As String
    TestEndPoint = "http://SoapEndPoint/bla/bla/bla"
    Dim SOAPRqst As String
    SOAPRqst = "comfirmed_Working_Soap_String_Goes_Here"

    ' create the request object
    Dim wR As WebRequest = WebRequest.Create(TestEndPoint)

    ' Get the response.
    Dim response As HttpWebResponse = CType(wR.GetResponse(), HttpWebResponse)

    ' Display the status.
    MsgBox(response.StatusDescription)

    ' Get the stream containing content returned by the server.
    Dim dataStream As Stream = response.GetResponseStream()

    ' Open the stream using a StreamReader for easy access.
    Dim reader As New StreamReader(dataStream)

    ' Read the content.
    Dim responseFromServer As String = reader.ReadToEnd()

    ' Display the content.
    MsgBox(responseFromServer)

    ' Cleanup the streams and the response.
    reader.Close()
    dataStream.Close()
    response.Close()

2 个答案:

答案 0 :(得分:0)

使用.net,我们通常不会以这种方式处理SOAP信封,而是通过Web服务(或最近使用WCF)。

如果该服务器在该地址中公开了WSDL合约,您应该尝试在项目中添加Web Reference并使用自动生成的代理类操作该服务。

答案 1 :(得分:0)

如果你打算这样做,你需要使用WebRequest.GetRequestStream

如果你真的需要简单,那么你应该使用WebClient

另请注意:

  • 您永远不应该将XML作为字符串进行操作。一旦您需要操作其中包含非法(用于XML)字符的XML,这将会中断。您应该使用其中一个XML API。由于您使用的是VB.NET,如果您还使用VS2008,则可以使用XML Literals来创建实际的XML内联。
  • 您正在创建的几个对象实现了IDisposable接口。这意味着应该从Using块创建和访问它们。例如:

    Using dataStream As Stream = response.GetResponseStream()
       ' ...
    End Using
    

    这将确保调用Dispose方法,即使从块中抛出异常也是如此。这对于像流这样具有非托管资源需要清理的对象尤为重要。


顺便说一句,如果你刚刚开始,我不知道你为什么要以艰难的方式开始做事。使用Web服务的简单方法是使用“添加服务引用”来指向服务的WSDL文件。这将生成一个类,您可以使用它来调用Web服务,就像它是一个普通的类。它还将为任何复杂参数或服务使用的返回值生成类。您需要做的就是创建对象,填充它们,然后调用服务并将结果作为对象。无需使用XML。