1

下面的代码(在 ASP.Net 2.0 中运行)两次显示请求的 URL 的内容。我只希望它显示一次请求的 URL 的内容。我无法弄清楚我做错了什么。请求的 URL 正在返回 XML,如果我直接访问该 URL,它可以正常工作。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/xml";
request.ContentLength = postDataBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postDataBytes, 0, postDataBytes.Length);
requestStream.Close();

// get response and write to console
response = (HttpWebResponse) request.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
try {
   Response.Write(responseReader.ReadToEnd());
}
finally {
   responseReader.Close();
}
response.Close();
4

2 回答 2

0

您的代码看起来不错,所以我认为问题不存在......但我建议如下:

1) 也许错误在 URL 的另一端...所以尝试点击 Google 并查看返回的内容是否良好。

2) 在“responseReader.ReadToEnd()”处放一个断点,看看那里的结果是否好。

3) 如果上面的代码在 ASPX 页面中……你确定要调用“Response.End();”吗?在你最后一行代码之后?(不是“resposne.close()”,而是“Response.End()”)。

于 2008-10-24T10:12:32.937 回答
0

我发现了问题。它根本不是上面的代码,而是被调用的页面。我调用的页面继承自一个类,该类的 Page_OnInit 方法包含以下行:“MyBase.OnLoad(e)”,这导致 Page_OnLoad 方法被执行两次。显然,它应该是 MyBase.OnInit(e) 。我没有抓住它,因为当我直接测试页面时,我不得不暂时从类中删除继承,因为其他一些代码会阻止我直接测试页面。

我现在要戴上我的“笨蛋”帽子,然后退到角落里休息一会儿。无论如何感谢您的帮助。

于 2008-10-24T14:36:57.243 回答