有关HttpWebRequest的问题。分不够还可以加!看谁能解决!

bluesage 2007-04-23 05:53:49
http请求返回来的结果不正常。结果没能返回新闻列表,返回的结果是“您要查找的文件不存在!”。
应该是服务端根据channel_name,查找相应的列表文件,但是服务端没能正常解析URL。
怎么办?????

程序代码如下:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://hkstock.eastmoney.com/channel_third.asp?channel_name=港股新闻&page=1");
request.Timeout = 60000;
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("GB2312"));
string buffer = "";
string line = "";
while ((line = reader.ReadLine()) != null)
{
buffer += line + "\r\n";
}
reader.Close();
stream.Close();
response.Close();
...全文
294 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingchao123 2007-05-10
  • 打赏
  • 举报
回复
有用
ssdx 2007-04-24
  • 打赏
  • 举报
回复
你的程序在我这里编译运行没有问题..........我直接copy的......
childni 2007-04-24
  • 打赏
  • 举报
回复
这个正好有用呢
Red_angelX 2007-04-24
  • 打赏
  • 举报
回复
来晚了... 中文要先编码
bluesage 2007-04-24
  • 打赏
  • 举报
回复
太感谢各位老大啦!
按照孟老大的方法,已经解决了。
很荣幸有这么多老大帮忙解决问题,再次感谢!
孟子E章 2007-04-24
  • 打赏
  • 举报
回复
汉字编码有多种
试试
System.Web.HttpUtility.UrlEncode("中文", System.Text.UnicodeEncoding.GetEncoding("GB2312")).ToUpper()
System.Web.HttpUtility.UrlEncode("中文", System.Text.Encoding.GetEncoding("GB2312")).ToUpper()
System.Web.HttpUtility.UrlEncode("中文", System.Text.Encoding.UTF8.ToUpper()

总有一种是合适的

shalen520 2007-04-24
  • 打赏
  • 举报
回复
如果真的是文件不存在,应该是 http 404错误
shalen520 2007-04-24
  • 打赏
  • 举报
回复
http://hkstock.eastmoney.com/channel_third.asp?channel_name=港股新&page=1

你将"港股新闻"去掉一个字,然后把链接复制到浏览器地址栏访问一下就知道了,页面提示信息就是"您要查找的文件不存在",明显是没能根据栏目名称得到栏目的问题,这个提示信息纯粹就是在误导人
bluesage 2007-04-24
  • 打赏
  • 举报
回复
感谢ssdx(未来啊未来)能不厌其烦的解答。
程序运行是没问题,但是返回的结果,不是预期的新闻列表页,在列表的位置,返回的是“您要查找的文件不存在”。所以推想服务端,肯定是根据传过去的channel_name,然后找到对应的列表文件,然后server.execute出来。因为服务端没有能解析我这个url,所以就找不到相应的文件,所以就出现“您要查找的文件不存在”这个信息。
shoushii 2007-04-24
  • 打赏
  • 举报
回复
文字編碼傳輸問題
在web.config歷修改encoding="gb2312"
bluesage 2007-04-23
  • 打赏
  • 举报
回复
非常感谢大家帮忙!
to ssdx(未来啊未来)、zhoufoxcn(周公) 二位:
微软的例子也是直接用WebRequest,httpWebRequest 是WebRequest的子类,我试过,好像没什么变化。
应该是汉字的编码问题,我也用过UrlEncode,但是好像也不行,也许是我用的不对。
感谢大家,希望能有更多的提示。
GX198302 2007-04-23
  • 打赏
  • 举报
回复
中文啊中文
Erison 2007-04-23
  • 打赏
  • 举报
回复
使用URL传递中文,需要进行URL编码
feiyun0112 2007-04-23
  • 打赏
  • 举报
回复
应该是中文的问题"港股新闻"
ssdx 2007-04-23
  • 打赏
  • 举报
回复
楼主 你系统的问题吧?

你的代码在我这里一点问题也没有......
shalen520 2007-04-23
  • 打赏
  • 举报
回复
应该是"港股新闻"这几个汉字未能正确编码
周公 2007-04-23
  • 打赏
  • 举报
回复
WebRequest wrq = WebRequest.Create("http://hkstock.eastmoney.com/channel_third.asp?channel_name=港股新闻&page=1");
WebResponse wrs = wrq.GetResponse();
Stream strm = wrs.GetResponseStream();

StreamReader sr = new StreamReader(strm);

string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}

strm.Close();
================================================
同意这个。
shalen520 2007-04-23
  • 打赏
  • 举报
回复
System.Web.HttpUtility.UrlEncode("http://hkstock.eastmoney.com/channel_third.asp?channel_name=港股新闻&page=1");
ssdx 2007-04-23
  • 打赏
  • 举报
回复
WebRequest wrq = WebRequest.Create("http://hkstock.eastmoney.com/channel_third.asp?channel_name=港股新闻&page=1");
WebResponse wrs = wrq.GetResponse();
Stream strm = wrs.GetResponseStream();

StreamReader sr = new StreamReader(strm);

string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}

strm.Close();
hongkuihao 2007-04-23
  • 打赏
  • 举报
回复
Stream stream = response.GetResponseStream();

StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("GB2312"));

获取文件是不是应该是个路径,没见你有类似路径的代码。

又或者根据URL传入的参数来判断怎么获取文件,在你的代码里没有发现参数的处理。

这个错误应该是文件路径有误,你再查查。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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