读取XML文件值并使用SOAP提交到web服务



我是Web服务的新手。我在Visual Web Developer 2010学习版中创建了一个新网站,并向网站的.asmx页面添加了一个服务引用,并为其提供了一个名称空间BBImportLead。

最终结果是将几个客户从我们的PICK/Universe数据库加载到一个XML文件中,通过ASP.NET从XML文件中获取每个标签(FName、LName等)的InnerText字符串,通过SOAP将字符串发送到web服务,并将结果显示给用户(目前在标签中,但将来可能会根据结果采取行动,例如如果xml文件发送成功,则删除它)。

我尝试过使用VB和C#来执行以下不同的示例,但我没有让它发挥作用。看起来我能够用VB非常接近这个例子:http://www.asp.net/web-forms/videos/building-35-applications/an-introduction-to-soap-based-web-services-with-visual-web-developer-2008

这是我的Default.aspx.vb代码。我的目标是在我创建的标签中显示来自web服务的字符串响应。

    Partial Class _Default
    Inherits System.Web.UI.Page
    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim BBImportLeadService As New BBImportLead.BBCallDataSoapClient
        Dim doc As New System.Xml.XmlDocument
        doc.Load("bborder.xml")
        Dim AuthenHead = doc.GetElementsByTagName("AuthenHead")
        Dim FName = doc.GetElementsByTagName("FName").ToString
        Dim LName = doc.GetElementsByTagName("LName").ToString

        Label1.Text = BBImportLeadService.ImportLead(AuthenHead:=AuthenHead, FName:=FName, LName:=LName)

    End Sub
End Class

我得到的错误是关于AuthenHead变量的,因为它不是字符串。这是一个tns值,但我不知道如何使用doc。GetElementsByTagName并将其转换为服务所要求的内容?

错误1"System.Xml.XmlNodeList"类型的值无法转换为"BBImportLead.AuthenHead"

有人能给我指正确的方向吗?如何修复tns错误,如果这看起来应该有效?


更新:我为我的C#尝试找到了这段新代码。这会更好用吗?它似乎发送了一些东西并得到了响应,但我没有web服务的用户名和密码来获得他们的响应。我也不知道在哪里可以调用他们的Web服务上的特定函数来获取我的xml数据。

string data = "bborder.xml";
        string url = "urltakenoutforexample";
        string servresponse = "the response from the server";
        // build request objects to pass the data/xml to the server
        byte[] buffer = Encoding.ASCII.GetBytes(data);
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.Method = "POST";
        request.ContentType = "application/soap+xml";
        request.ContentLength = buffer.Length;
        Stream post = request.GetRequestStream();
        // post data and close connection
        post.Write(buffer, 0, buffer.Length);
        post.Close();
        // build response object
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        Stream responsedata = response.GetResponseStream();
        StreamReader responsereader = new StreamReader(responsedata);
        servresponse = responsereader.ReadToEnd();
        lbNodes.Items.Add(servresponse);

首先,我强烈建议不要使用网站"project"。这只适用于简单的网站。如果你使用的是网络服务,那么我不会称你的网站为"简单"。

其次,您根本不应该使用ASMX服务。这是一项遗留技术,不应该用于新的开发。您应该使用WCF进行所有新的开发。

我在http://asp.net,请他们把那个旧视频拿下来。它让你走错了路。

最新更新