我试图获取一个XML然后response.write它到一个页面(在我的服务器上)所以我可以稍后用Ajax请求(javascript)得到它..但是当我尝试这个时,该文档以HTML格式出现带有XML节点的-page: http://imgur.com/GL47U
如果我使用我的浏览器访问网址,它会显示正确的XML,所以我猜它没有错误来源?
下面是在page_load上调用的代码:
public void getXML(){
WebRequest req = WebRequest.Create("url");
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
req.ContentType= "text/xml charset=utf8";
Stream streamdata = resp.GetResponseStream();
StreamReader reader = new StreamReader(streamdata);
string serverresponse = reader.ReadToEnd();
reader.Close();
streamdata.Close();
resp.Close();
Response.Write(serverresponse);
}
我缺少什么? (是的,我是新手!) TNX
的javascript: var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
console.log(xmlhttp.responseXML);
}
}
xmlhttp.open("GET", "http://127.0.0.1:8080/api.aspx?METHOD=getXML",true);
xmlhttp.setRequestHeader("Content-type", "application/xml");
xmlhttp.send();
答案 0 :(得分:2)
HTML(api.aspx)
<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" ContentType="text/xml" %>
CODE BEHIND(api.aspx)
public partial class api: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
getXML();
}
public void getXML()
{
WebRequest req = WebRequest.Create("http://webdev.clic.det.nsw.edu.au/Mum12/Public/Sample.xml");
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
req.ContentType = "text/xml charset=utf8";
Stream streamdata = resp.GetResponseStream();
StreamReader reader = new StreamReader(streamdata);
string serverresponse = reader.ReadToEnd();
reader.Close();
streamdata.Close();
resp.Close();
Response.Write(serverresponse);
}
}
这就是我在test.aspx中消耗它的方式
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.8.2.min.js" type="text/javascript"></script>
</head>
<body>
<script>
$(document).ready(function () {
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log(xmlhttp.responseXML);
}
};
xmlhttp.open("GET", "http://localhost/testwebsite/api.aspx", true);
xmlhttp.send();
});
</script>
</body>
</html>
我按预期获得了xml。如果有帮助,请测试并告诉我。
答案 1 :(得分:1)
您需要设置响应的内容类型,以便浏览器正确处理它:
Response.ContentType = "text/xml";
正如Tariqulazam所说,页面内容可能还可以。要查看实际发生的情况,请使用“查看页面源”而不是开发工具来查看。