我是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);
答案 0 :(得分:0)
首先,我强烈建议不要使用网站“项目”。这只适用于简单的网站。如果您使用的是网络服务,那么我不会将您的网站称为“简单”。
其次,您根本不应该使用ASMX服务。这是一项不应用于新开发的传统技术。您应该使用WCF进行所有新开发。
我已对http://asp.net发表评论,要求他们将旧视频删除。它让你走错了路。