.NET处理请求后返回XML,为什么返回的XML带有处理页的HTML代码,如何处理?

Banianer 2012-03-12 04:34:36
为做数据接口,发送XML请求至一个处理页面 ReOnly.aspx
ReOnly.aspx 前台页面为默认创建的内容
cs代码如下:

public partial class ReOnly : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//设置 HTTP 头
//Response.ContentType = "text/xml";
//Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.Clear();
XmlTextWriter writer = null;
writer = new XmlTextWriter(Response.Output);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteStartElement("appid");
writer.WriteString("aaa");
writer.WriteEndElement();

writer.WriteStartElement("status");
writer.WriteString("0");
writer.WriteEndElement();

writer.WriteStartElement("needcookie");
writer.WriteString("2");
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();
}
}



请求的主要内容如下:


WebRequest request = WebRequest.Create(url);
request.Method = "POST";
string sendData = xmlDoc.InnerXml;
byte[] byteArray = Encoding.Default.GetBytes(sendData);

Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, System.Text.Encoding.GetEncoding("GB2312"));
string responseXml = reader.ReadToEnd();

//try
//{
xml.LoadXml(responseXml);//这里提示了错误,说DTD内容应该在写根节点前,原因主要是返回了多余的html代码
string status = xml.DocumentElement.SelectSingleNode("status").InnerText;
if (status == "0")
{
Message = "返回成功!";
}
else
{
Message = "请求数据错误!";
}



xml.LoadXml 得到的代码

<?xml version="1.0" encoding="utf-8"?>
<root>
<appid>aaa</appid>
<status>0</status>
<needcookie>2</needcookie>
</root>

<!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><title>

</title></head>
<body>
<form name="form1" method="post" action="ReOnly.aspx" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZLqex1hYqVDdvl7couz8D8g1tCTz" />

<div>

</div>
</form>
</body>
</html>



我看把多余的 ReOnly.aspx 的 html 代码也给返回回来了,请问在返回XML 的时候要如何避免返回HTML 代码的内容呢?

谢谢!
...全文
164 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Banianer 2012-03-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aspwebchh 的回复:]
Response.End();
[/Quote]

原来没写这个~~ 谢了
Banianer 2012-03-12
  • 打赏
  • 举报
回复
总不会是让我吧 responseXml 中 </root> 后面的字符截掉吧~~

我想应该可以只返回XML的内容。
挨踢直男 2012-03-12
  • 打赏
  • 举报
回复
public partial class ReOnly : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//设置 HTTP 头
//Response.ContentType = "text/xml";
//Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.Clear();
XmlTextWriter writer = null;
writer = new XmlTextWriter(Response.Output);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteStartElement("appid");
writer.WriteString("aaa");
writer.WriteEndElement();

writer.WriteStartElement("status");
writer.WriteString("0");
writer.WriteEndElement();

writer.WriteStartElement("needcookie");
writer.WriteString("2");
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();
Response.End();
}
}


要不用ashx文件

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧