我是面向对象编程的新手,所以我在这里只需要基础知识的帮助。我有一个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()
答案 0 :(得分:0)
使用.net,我们通常不会以这种方式处理SOAP信封,而是通过Web服务(或最近使用WCF)。
如果该服务器在该地址中公开了WSDL合约,您应该尝试在项目中添加Web Reference
并使用自动生成的代理类操作该服务。
答案 1 :(得分:0)
如果你打算这样做,你需要使用WebRequest.GetRequestStream
。
如果你真的需要简单,那么你应该使用WebClient
。
另请注意:
您正在创建的几个对象实现了IDisposable
接口。这意味着应该从Using
块创建和访问它们。例如:
Using dataStream As Stream = response.GetResponseStream()
' ...
End Using
这将确保调用Dispose
方法,即使从块中抛出异常也是如此。这对于像流这样具有非托管资源需要清理的对象尤为重要。