ASP经典VBScript到ASP.NET C#转换

时间:2013-08-08 01:18:22

标签: c# asp.net .net

我熟悉ASP.NET,但不熟悉Visual Basic。

这是Visual Basic代码:

 myxml="http://api.ipinfodb.com/v3/ip-city/?key="&api_key&"&ip=" &UserIPAddress&"&format=xml"
 set xml = server.CreateObject("MSXML2.DOMDocument.6.0")
 xml.async = "false"
 xml.resolveExternals = "false"
 xml.setProperty "ServerHTTPRequest", true
 xml.load(myxml)
 response.write "<p><strong>First result</strong><br />"
 for i=0 to 10
     response.write xml.documentElement.childNodes(i).nodename & "  :  "
     response.write xml.documentElement.childNodes(i).text & "<br/>"
 NEXT
 response.write "</p>"

此代码中发生了什么?

如何将其转换为ASP.NET(C#)?

2 个答案:

答案 0 :(得分:2)

根据您在评论中链接到的网站的快速浏览,看起来预期的功能是向URL发出请求并接收响应。该网站上给出的第一个例子是:

http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&ip=74.125.45.100

您可以使用the System.Net.WebClient object之类的内容来发出HTTP请求并接收响应。可以为您的URL修改MSDN上的示例。也许是这样的:

var client = new WebClient();
client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
var data = client.OpenRead(@"http://api.ipinfodb.com/v3/ip-city/?key=<your_api_key>&ip=74.125.45.100");
var reader = new StreamReader(data);
var result = reader.ReadToEnd();
data.Close();
reader.Close();

(还有the WebRequest class,它似乎共享大致相同的功能。)

此时result变量包含API的响应。无论你需要哪种,你都可以处理。

答案 1 :(得分:1)

从Visual Basic代码的外观来看,我认为您应该创建两个方法来将其“转换”为ASP.NET C#网页:

  1. LoadXmlData方法 - 使用XmlDocument通过XmlDocument的{​​{1}}功能从网址加载Load。请阅读ASP.net load XML file from URL以获取示例。

  2. BuildDisplay方法 - 使用ASP.NET PlaceHolderPanel创建容器,将段落标记和单个结果注入。