在我这里,浏览器也没有搜寻结果, 好像这工作
Dim req As WebRequest = WebRequest.Create("http://search.xinhuanet.com/search/searchnews.jsp?sw=" & System.Web.HttpUtility.UrlEncode("流感", System.Text.Encoding.Unicode))
Dim res As WebResponse = req.GetResponse()
Dim stream As Stream = res.GetResponseStream()
Dim reader As StreamReader = New StreamReader(stream, Encoding.Default)
Dim strResult As String = reader.ReadToEnd() Console.WriteLine(strResult)
Dim req As WebRequest = WebRequest.Create("http://search.xinhuanet.com/search/searchnews.jsp?sw=" & System.Web.HttpUtility.UrlEncode("流感", System.Text.Encoding.Unicode))
Dim res As WebResponse = req.GetResponse()
Dim stream As Stream = res.GetResponseStream()
Dim reader As StreamReader = New StreamReader(stream, Encoding.Default)
Dim strResult As String = reader.ReadToEnd() Console.WriteLine(strResult)
http://search.xinhuanet.com/search/searchnews.jsp?sw=%C1%F7%B8%D0&sc=1
在地址栏里直接输入可以显示,但是在程序里也没结果。这个URL我在一个保存页面到MHT文件的程序里测试,10次中大部分失败,但也有两次成功。
说明它是用了编码.
所以我认为,肯定是在服务器端编程时作了判断.
区分出是通过程序发的请求,还是直接在ie上发的请求
我看了也许在request.heads上是不同的,通过程序发的
就没有Accept-Encoding
Accept-Language
Cookie
这三个信息.
所以我想在程序发送时在heads加上这几个信息,怎么加?
HttpWebRequest re =(HttpWebRequest)HttpWebRequest.Create(url);
re.Accept ="*/*";
这里不行.re.heads是只读的
//re.Headers .Add("Accept-Encoding","utf-8");
re.Headers.Add("Accept-Encoding", "gzip, deflate");
.....
谢谢思归继续关注.
HttpWebRequest re =(HttpWebRequest)HttpWebRequest.Create(url);
re.Headers.Add("Accept-Encoding", "gzip, deflate");
是对的,不是只读的,我以前搞错了.
你用"流感"时,返回的都是什么?列几条结果出来国家给予合理补偿 今晚报 采集时间:2004年09月01日 09:24:32 6.2K字节 相关报道全国防治科技组成立 今晚报 采集时间:2004年09月01日 09:24:31 6.2K字节 相关报道世卫专家来华协助防控禽流感 今晚报 采集时间:2004年09月01日 09:24:31 6.2K字节 相关报道
dim strURL as String = "http://search.xinhuanet.com/search/searchnews.jsp?sw=" & System.Web.HttpUtility.UrlEncode("流感", System.Text.Encoding.GetEncoding("GB2312"))
Dim req As WebRequest = WebRequest.Create(strURL)
req.Headers("Accept-Language") = "zh-CN"
Dim res As WebResponse = req.GetResponse()
Dim stream As Stream = res.GetResponseStream()
Dim reader As StreamReader = New StreamReader(stream, Encoding.Default)
Dim strResult As String = reader.ReadToEnd() Console.WriteLine(strResult)