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

时间:2012-02-09 16:27:40

标签: web-services soap asp.net-4.0 xmldocument visual-web-developer-2010

我是Web Services的新手。我在Visual Web Developer 2010 Express中创建了一个新网站,并在网站的.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);

1 个答案:

答案 0 :(得分:0)

首先,我强烈建议不要使用网站“项目”。这只适用于简单的网站。如果您使用的是网络服务,那么我不会将您的网站称为“简单”。

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

我已对http://asp.net发表评论,要求他们将旧视频删除。它让你走错了路。