我是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,请他们把那个旧视频拿下来。它让你走错了路。