C# 如何从razor中的链接打开XML?
任务非常简单,使用XML连接到另一个Web服务。C# 如何从razor中的链接打开XML?,c#,asp.net-mvc-4,razor,xmlhttprequest,webservices.nl,C#,Asp.net Mvc 4,Razor,Xmlhttprequest,Webservices.nl,任务非常简单,使用XML连接到另一个Web服务。 在当前页面(经典ASP)中,我们使用以下代码: zoekpcode=UCASE(Request.Querystring("zoekpcode")) <-- postal-code zoeknr=Request.Querystring("zoeknr") <-- house-number PC=Trim(Replace(zoekpcode," ","")) NR=Trim(Replace(zoeknr," ","")) strGet
在当前页面(经典ASP)中,我们使用以下代码:
zoekpcode=UCASE(Request.Querystring("zoekpcode")) <-- postal-code
zoeknr=Request.Querystring("zoeknr") <-- house-number
PC=Trim(Replace(zoekpcode," ",""))
NR=Trim(Replace(zoeknr," ",""))
strGetAddress="https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/*~*/*~*/" & PC & NR
set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", strGetAddress , false
xml.send ""
strStatus = xml.Status
If Len(PC)>5 and Len(NR)>0 Then
strRetval = Trim(xml.responseText)
End If
set xml = nothing
'Do something with the result string
public static XmlDocument getaddress(string pcode, string number){
string serverresponse = "";
string getlocation = "https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/*~*/*~*/" + Request.QueryString["PCODE"] + Request.QueryString["NR"];
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(getlocation);
using (var r = req.GetResponse()) {
using (var s = new StreamReader(r.GetResponseStream())) {
serverresponse = s.ReadToEnd();
}
}
XmlDocument loader = new XmlDocument();
loader.LoadXml(serverresponse);
return loader;
}
public static string getvalue(XmlDocument document, string node){
string returnval = "";
var results = document.SelectNodes(node);
foreach(XmlNode aNode in results){
returnval = returnval + "," + aNode.InnerText;
}
return returnval.Substring(1);
}
zoekpcode=UCASE(Request.Querystring(“zoekpcode”))0然后
stretval=Trim(xml.responseText)
如果结束
设置xml=nothing
'对结果字符串执行某些操作
其中一个可能的链接可以是:
目前,我正在寻找一种在razor(C#)中实现这一点的方法,但我在Google上找到的似乎只是如何在JavaScript中实现这一点我尝试过(大多数组合)以下术语:
- 剃刀
- xmlhttp
- 共对象
- 来自url的XML
- -javascript
根据其他结果(如在razor中搜索comobject),似乎comobject在razor中不可用
我确实在stackoverflow上发现了这个问题(),它似乎回答了我的问题(部分),但通过指向外部系统(提到的web服务)的链接也有可能吗?我在Razor web页面中介绍了web服务的使用情况: 如果您的web服务是SOAP服务,那么最好使用visualstudio(免费的expresseditions很好)添加服务引用,然后从那里开始工作。否则,您可以使用Linq To XML将XML直接加载到XDocument中,如本文中的ATOM示例所示:
var xml = XDoxument.Load("https://ws1.webservices.nl/rpc/get-simplexml/blah/blah");
然后使用System.Xml.Linq API查询文档 在的帮助下,我得到了以下代码:
zoekpcode=UCASE(Request.Querystring("zoekpcode")) <-- postal-code
zoeknr=Request.Querystring("zoeknr") <-- house-number
PC=Trim(Replace(zoekpcode," ",""))
NR=Trim(Replace(zoeknr," ",""))
strGetAddress="https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/*~*/*~*/" & PC & NR
set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", strGetAddress , false
xml.send ""
strStatus = xml.Status
If Len(PC)>5 and Len(NR)>0 Then
strRetval = Trim(xml.responseText)
End If
set xml = nothing
'Do something with the result string
public static XmlDocument getaddress(string pcode, string number){
string serverresponse = "";
string getlocation = "https://ws1.webservices.nl/rpc/get-simplexml/addressReeksPostcodeSearch/*~*/*~*/" + Request.QueryString["PCODE"] + Request.QueryString["NR"];
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(getlocation);
using (var r = req.GetResponse()) {
using (var s = new StreamReader(r.GetResponseStream())) {
serverresponse = s.ReadToEnd();
}
}
XmlDocument loader = new XmlDocument();
loader.LoadXml(serverresponse);
return loader;
}
public static string getvalue(XmlDocument document, string node){
string returnval = "";
var results = document.SelectNodes(node);
foreach(XmlNode aNode in results){
returnval = returnval + "," + aNode.InnerText;
}
return returnval.Substring(1);
}
为什么它首先使用XMLHTTP,而不仅仅是一个简单的HttpWebRequest?当然,这可以用在razor中的嵌入式c#代码中。我不清楚使用XMLHTTP的原因。通过简短的搜索,我们知道HttpWebRequest可以在razor中使用。在测试过程中,我发现它产生了一个字符串。您知道是否可以在解链接问题中使用XmlDocument中的字符串吗?@Ralf感谢您向正确的方向推进。我将发布我自己的代码作为答案(但不标记它)。如果你想把你的回复作为答案,我会记下来的。我不喜欢这个名声追逐的东西。所以继续告诉我们你做了什么。我会做的,但我必须等到8个小时后,才要求张贴它作为一个答案。。。但事实是:我认为这个答案很好,因为它比我的答案更容易理解。但是,这种方式会给出一个错误,表示XML无效。我会将此标记为供其他人使用的答案。