最近用C#写代码,遇见一个奇怪的问题。用WebRequest对象访问一个Url地址,被报400错误。但是同样的Url在浏览器(如IE)中访问时并没有报错,很正常。把握郁闷坏啦。有碰到这类问题的朋友吗?指点一下。代码如下:
static void Main(string[] args)
{
Console.WriteLine("测试\n============================="); string url = @"http://bbs.360safe.com/forumdisplay.php?fid=22&page=1"; try
{
WebRequest request = WebRequest.Create(url);
Console.WriteLine("Method: {0}", request.Method);
Console.WriteLine("ContentType : {0}", request.ContentType);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream, Encoding.Default);
string html = sr.ReadToEnd();
response.Close();
Console.WriteLine("[WebRequest下载:" + html.Length.ToString() + " 字符] "); }
catch (WebException e)
{
Console.WriteLine("[WebRequest下载出错0:" + e.Message + "] ");
}
catch (Exception e)
{
Console.WriteLine("[WebRequest下载出错0:" + e.Message + "] ");
} Console.ReadLine();
}
static void Main(string[] args)
{
Console.WriteLine("测试\n============================="); string url = @"http://bbs.360safe.com/forumdisplay.php?fid=22&page=1"; try
{
WebRequest request = WebRequest.Create(url);
Console.WriteLine("Method: {0}", request.Method);
Console.WriteLine("ContentType : {0}", request.ContentType);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream, Encoding.Default);
string html = sr.ReadToEnd();
response.Close();
Console.WriteLine("[WebRequest下载:" + html.Length.ToString() + " 字符] "); }
catch (WebException e)
{
Console.WriteLine("[WebRequest下载出错0:" + e.Message + "] ");
}
catch (Exception e)
{
Console.WriteLine("[WebRequest下载出错0:" + e.Message + "] ");
} Console.ReadLine();
}
解决方案 »
- c#如何用ping的方法验证代理IP是否可用
- 求一正则表达式
- [[请高手解答,TcpSocket服务器端发信息,在客户端显示问题]]
- 关于串口的问题
- [高分提问] 软件如何自动以管理员身份打开 C# 做的 exe 应用程序?
- ----紧急求救,关于udp的广播的问题,有代码和注释,我的程序就是不能发送和接收,也不能干净的退出去,不知道为什么?----
- 在winform中,能实现的显示两个表关联数据(即点+号显示另一数据库表数据), 在webform中能实现吗?如何写呢?
- 再问解决DataGrid中数据绑定行宽设置的问题
- get和set的用法和作用(具体点,在线等待!!)
- 紧急,关于TabControl控件
- 分享:WPF编程体验,先启动登录==>后启动主程序的运行机制实现
- c#(winform) 中有没有精确到小时的控件,datetimepicker控件好象只到天啊
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
string strhtml = Internet.GetHtml(url);using System;
using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
public static class Internet
{
private static HttpWebRequest request;
private static HttpWebResponse response;
private static StreamReader reader;
private static string strResults;
private static Encoding encoding;
static Internet()
{
strResults = string.Empty;
}
public static string GetHtml(string strLink)
{
try
{ request = (HttpWebRequest)WebRequest.Create(strLink);
switch ((DateTime.Now.Second % 2))
{
case 0:
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1;.NET CLR 2.0.50727)";
break; default:
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Web-Sniffer/1.0.24";
break;
}
response = (HttpWebResponse)request.GetResponse();
if (response.CharacterSet != null && response.CharacterSet.ToLower() == "utf-8")
{
encoding = Encoding.UTF8;
}
else
{
encoding = Encoding.GetEncoding(936);
}
reader = new StreamReader(response.GetResponseStream(),encoding);
strResults = Regex.Replace(reader.ReadToEnd(), @"[\r\n]", " ");
if (strLink != response.ResponseUri.ToString())
{
strResults = "|RedirectWeb|" + strResults;
}
return strResults;
}
catch
{
return string.Empty;
}
finally
{
request.Abort();
if (response != null)
{
response.Close();
}
if (reader != null)
{
reader.Close();
reader.Dispose();
}
} }
}