我是 Web 服务的新手。我在 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-服务-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 服务上调用特定函数的位置来让我的 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);