• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

请教高人:WebClient如何获得有错误的网页,就象IE一样容错?

shyworm 2003-10-29 04:36:01
当网页有错误时,IE浏览器仍然可以获得页面内容;
但WebClient却因异常而什么也得不到,请教高手如何解决呢?
我希望在有错误时,WebClient仍然可以获得一些内容。
...全文
125 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shyworm 2003-11-09
怪了,我换别的机器都可以看到足球联赛的内容的。问题究竟在哪里呢?
回复
saucer 2003-11-07
我看到的是

Server Error in '/WebClient' Application.
--------------------------------------------------------------------------------

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review

.....

跟你上面的HTML一模一样

你还是没理解,你的网页有错,服务器传回来这出错的内容,浏览器就直接显示出来了,但.NET因为看到了网页的StatusCode是500,所以它为了提醒你,把出错内容包含在一个WebException,然后告诉你出错了

你可以不理它,你用Socket获取内容就知道了
回复
shyworm 2003-11-07
你用浏览器访问如下地址试试,结果是正常的网站网页,而不是错误提示。只是在浏览器的状态栏的左边会有一个惊叹号图标和文字“网页上有错误”,但网站的网页内容仍然显示了的。

http://www.interwetten.com/webclient/betting/offer.aspx?type=1&kindofsportid=10&L=EN
回复
saucer 2003-11-07
我不明白你的问题,这就是浏览器显示的东西啊,你需要什么内容?

你的网页有错,服务器传回来这出错的内容,.NET看到是500,就给你个WebException,但浏览器就直接显示出来了
回复
saucer 2003-11-07
I am getting this error page in the browser both at work and home
回复
shyworm 2003-11-07
非常感谢saucer(思归)的帮助,不过返回结果中没有我想要的内容呀。(Console输出如下)

是否跟Encoding enc = Encoding.GetEncoding("GB2312");这句代码有关呢?因为这个页面不是中文网页。但我试过改成Encoding enc = Encoding.GetEncoding("iso-8859-1");也不行。
我是用你给的程序运行测试的。

<html>
<head>
<title>Object reference not set to an instance of an object.</title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;c
olor:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-t
op: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top
: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;col
or:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;col
or:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}

.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color
:navy; cursor:hand; }
</style>
</head>

<body bgcolor="white">

<span><H1>Server Error in '/WebClient' Application.<hr width=100% si
ze=1 color=silver></H1>

<h2> <i>Object reference not set to an instance of an object.</i> </
h2></span>

<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">


<b> Description: </b>An unhandled exception occurred during the exec
ution of the current web request. Please review the stack trace for more informa
tion about the error and where it originated in the code.

<br><br>

<b> Exception Details: </b>System.NullReferenceException: Object ref
erence not set to an instance of an object.<br><br>

<b>Source Error:</b> <br><br>

<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code>

An unhandled exception was generated during the execution of the current web req
uest. Information regarding the origin and location of the exception can be iden
tified using the exception stack trace below.</code>

</td>
</tr>
</table>

<br>

<b>Stack Trace:</b> <br><br>

<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>

[NullReferenceException: Object reference not set to an instance of an object.]
Interwetten.WebClient.betting.offer.Page_Load(Object sender, EventArgs e) +20
2
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +753
</pre></code>

</td>
</tr>
</table>

<br>

<hr width=100% size=1 color=silver>

<b>Version Information:</b> Microsoft .NET Framework Version:1.
1.4322.573; ASP.NET Version:1.1.4322.573

</font>

</body>
</html>
<!--
[NullReferenceException]: Object reference not set to an instance of an object.
at Interwetten.WebClient.betting.offer.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain()
[HttpUnhandledException]: Exception of type System.Web.HttpUnhandledException wa
s thrown.
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain()
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at System.Web.CallHandlerExecutionStep.System.Web.HttpApplication+IExecutionS
tep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& compl
etedSynchronously)
-->
Press any key to continue
回复
shyworm 2003-11-07
奇怪了,我看到的是网站的内容啊,而不是错误提示。这是个足球网站,显示的是联赛列表。IE 5或6都一样,显示如下:

Clear Selection Next

Soccer


Please select one or more of the following bet offers.



England FA Cup (90')


England Premier League


England First Division


Germany Bundesliga


Germany Second League


Germany Third League South


Germany Third League North


Italy Serie A


Italy Serie B


Spain Premier Division


Spain Segunda Division


Scotland Premier League


Scotland First Division


France First Division


France Second Division


Portugal First League


Holland Ehrendivision


Holland Second League


Turkey First League


Greece First League


Austria Bundesliga


Austria First League


Switzerland Cup (90')


Denmark Superleague


Norway Cup Finale Oslo (90´)


Czech Republic First league


Republic Ireland Premier


Belgium First League


Poland First League


Belgium Second League


Major League Soccer (90')


Argentina Apertura


Mexico 1a Liga



Select all Clear Selection Next


回复
saucer 2003-11-03
if you copy the whole output to a html page, you will see that is exactly what you will get using a browser

When the .NET library receives a 500 error, it creates a WebException, wrap the respsonse inside its stream and throws the exception to your application code
回复
shyworm 2003-11-03
saucer(思归) 的做法只能获取WebResponse(如下),并没有获取目标网页。

<html>
<head>
<title>Object reference not set to an instance of an object.</title>
...
回复
saucer 2003-10-31
the exception is thrown by the .NET, you need to catch it, for example:

using System;
using System.Net;
using System.IO;
using System.Text;

class TestClient
{
public static void Main()
{
string sURL = "http://www.interwetten.com/webclient/betting/offer.aspx?type=1&kindofsportid=10&L=EN";
Encoding enc = Encoding.GetEncoding("GB2312");

try
{
WebClient wc = new WebClient();
Console.WriteLine(enc.GetString(wc.DownloadData(sURL)));
}
catch (WebException ex)
{

WebResponse wr = ex.Response;

StreamReader sr= new StreamReader(wr.GetResponseStream(), enc);
string sHtml = sr.ReadToEnd();
Console.WriteLine(sHtml);
sr.Close();
}
}
回复
shyworm 2003-10-31
gOODiDEA(无语) 说的对,返回的信息确实是:
远程服务器返回错误: (500) 内部服务器错误。

怎么办呢?
回复
shyworm 2003-10-31
是这样的啊!你试试这个地址:
http://www.interwetten.com/webclient/betting/offer.aspx?type=1&kindofsportid=10&L=EN

IE可以,Webclient却不行。
回复
gOODiDEA 2003-10-30
如果是500错,还是得不到有用的信息。
回复
saucer 2003-10-30
are you serious?

>>>当网页有错误时,IE浏览器仍然可以获得页面内容

if it is a server error, what you see on the screen is information from the browser itself, not received from the server

if the page is displayed in the browser but you get scripting errors, then you should always get the content with WebClient or whatever networking tool

do


try
{
//use your webclient here
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
if (ex.InnerException != null)
Console.WriteLine(ex.InnerException.Message);
}

回复
shyworm 2003-10-29
大哥大姐帮帮忙啊!
回复
相关推荐
tp2-webclient:Webclient del proyeto con Angular-源码
TP2Web客户端 该项目是使用版本10.0.0生成的。 开发服务器 为开发服务器运行ng serve 。... 如果您更改任何源文件,该应用程序将自动重新加载。...要获得有关Angular CLI的更多帮助,请使用ng help或查看 。
HtmlCodeDownload:使用WebClient下载网页源代码-html source download
HtmlCode下载 使用WebClient下载网页源代码 主菜单 输入您的网站 输入您要保存文件的位置 选择文件名 退出申请
::phpMpReloaded:: The webclient for mpd:MPDPHP Webclient集合(音乐播放器守护程序)-开源
但这是现有项目phpMp,phpMp +,phpMp2,phpMp3的延续,因此与它们一样稳定,尽管新功能令人眼前一亮。 简单易用。 欢迎提出建议和帮助! 为什么我应该捐赠或留下任何形式的反馈? 如大多数开发人员所知,开源软件...
C#使用WebClient登录网站并抓取登录后的网页信息实现方法
主要介绍了C#使用WebClient登录网站并抓取登录后的网页信息实现方法,涉及C#基于会话操作登陆网页及页面读取相关操作技巧,需要的朋友可以参考下
C#使用WebClient获取网页源文件例子
下载开箱即用:C#使用WebClient获取网页源文件例子:该例子演示了通过WebClient获取百度首页源文件,并进行UTF8解码,存入一个字符串中。
下载VisualStudio离线安装包,部分组件下载失败:WebClient download failed: Unable to connect to the ...
下载VisualStudio离线安装包,部分组件下载失败:WebClient download failed: Unable to connect to the remote server.(已解决)-附件资源
webclient 基础连接已经关闭: 发送时发生错误
基础连接已经关闭: 发送时发生错误
.NET WebClient 类下载部分文件会错误?可能是解压缩的锅
一直在使用 WebClient 下载文件,.NET 已经封装好,所以用起来代码非常简洁;但直到今天发现一个文件一直不能正确下载下来。 本文介绍这个问题的原因和解决方法,更重要的是给出调查方法。 @TOC 本文所涉及到的...
MagicPaste.WebClient:MagicPaste WebClient-源码
MagicPaste.WebClient 通过使用Azure SignalR服务发送和接收数据,MagicPaste WebClient Universal在.net核心Web应用程序与基于xamarin的本机android应用程序和Windows窗体应用程序之间粘贴数据。 微软最近发布了...
WebClient 远程服务器返回错误: (401) 未经授权
会直接导出文件,所以我想使用WebClient来下载,但是却报没有权限,不知道没有解决办法。 网上查了好久,发现可能是权限问题,加了下面的语句,仍然报错 wc.Credentials = new NetworkCredential("software", ...
Java Maven依赖:WebClient
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> ...
Spring WebFlux (5): WebClient使用
可以使用WebFlux的WebClient类很方便的对网络请求进行代理处理操作,我想Spring Cloud Gateway中主要用的就是WebClient进行操作,这里简单介绍一下WebClient的用法,想要深度学习的话,看一下Spring Cloud Gateway...
C# HttpWebResponse WebClient 基础连接已经关闭: 发送时发生错误.
https://blog.csdn.net/sun49842566/article/details/82802297 net 4.0 设置: ServicePointManager.SecurityProtocol = (SecurityProtocolType)... //.net 4.5 设置: ServicePointManager.SecurityProtocol...
WebClient下载媒体文件时报:基础连接已经关闭: 发送时发生错误
基础连接已经关闭: 发送时发生错误
webclient:通过RT-Thread的http客户端库-源码
WebClient软件包的功能如下: 支持IPV4 / IPV6地址; 支持GET / POST请求方式; 支持文件上传下载功能; 支持HTTPS加密传输; 完整的标头数据添加和处理方法。 有关软件包的更多介绍,请参阅。 1.1目录结构 ...
Spring 的http请求调用:WebClient的用法
这里记录下 WebClient 的学习 介绍 WebClient是从Spring WebFlux 5.0版本开始提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具。 进入正题,先是封装好的单例工具,本篇文章主要介绍我的踩坑经历,...
webclient:mega.nz Web客户端-源码
注:这是不完全一样的secureboot.js因为我们在网上 。 我们一个自动的过程,产生secureboot.js其密码散列和所有版本的资源文件( file_X.js / file_X.html )根据需要在此基础上存储库进行更新的现场直播之前...
CWR-WebClient:CWR-WebClient-源码
CWR Web客户端 该项目提供了一个Web UI来处理CWR文件。 为此,使用了 ,既可以表示这些文件的内容,又可以与使用的服务进行通信。 有关CWR标准的更多信息,请咨询相同的项目。... 文献资料 当前版本正在开发中。...
docker-airdcpp-webclient:AirDC ++ Web客户端Docker映像-源码
AirDC ++ Web客户端Docker映像 运行Docker映像。 您必须具有适当知识才能使用此映像。 运行应用程序 ... gangefors/airdcpp-webclient Web UI将在或。 如果要访问除5600/5601以外的任何其他端口上的We
关于 webclient UploadFile 导致的401 错误
本人想实现通过webclient 的uploadFile 给 IIs网站的某个目录下 ** 匿名** 上传文档 但是 一直返回 401 错误(**远程服务器返回错误: (401) 未经授权。**) ,结果,返回“远程服务器返回错误: (401) 未经授权。”的...
基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
主要介绍了基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览的方法,以实例形式详细分析了WebClient模拟POST与GET登陆与浏览的过程,对于C#项目开发来说具有不错的参考借鉴价值,需要的朋友可以参考下
解决 WebClient 405 错误的方法
我采用的是WebClient类进行操作的,在执行WebClient.UpLoadString()方法的时候,遇到“错误405,不被允许的方法”。多次尝试各种解决方案,均无果而归。最后解决方案如下: 1.在服务器上打开IIS管理器 2.找到...
笔记6:WebClient 类 一个更简捷的类
WebClient类设计用于存取时指定URI的资源,并且定义上传及下载数据所需的方法。  WebClient类比WebRequest及 WebResponse这两个类以更简便的方式达到相同的效果。 一、使用WebClient类  WebClient是一个无法...
rtl8188eu_USB_linux.tar.gz
TP-LINK TL-WN725N V2 Linux 驱动安装
STM32Cube和HAL库使用初体验-第5季第2部分
本季课程主要讲解STM32的全新开发方式:使用STM32CubeMX工具做图形化配置,自动生成初始化代码;添加各种中间件;使用HAL库和LL库来操作外设。结合朱老师物联网大讲堂专为nbiot物联网开发而设计的NB476开发板,本季课程能够让大家彻底掌握物联网时代以nbiot和低功耗STM32L4单片机为代表的典型开发模式,实战意义非常重要。 本课程是《朱有鹏老师单片机完全学习系列课程》第5季第2个课程,本部分以时钟和GPIO模块为案例来讲解STM32CubeMX工具加HAL库加MDK5这套开发体系的流程、技术细节,目标是让大家真正入门HAL库方式开发STM32单片机。后续再接着讲其他更复杂外设。
Control-flow Enforcement Technology Preview 2.0 spec
Intel CFI技术手册。 Intel CFI从CPU层次检测和防止ROP/JOP攻击,主要包含shadow stack和endbranch两项技术。 比软件层面的防御方法,如微软的CFG,更有效。目前Intel最新编译器已经支持此技术
后备电池及储能电池巡检白皮书.pdf
后备电池及储能电池巡检白皮书,施耐德电气主编的,数据中心电池巡检白皮书。
CListControl设置颜色
CListControl类派生,设置单元格颜色,丰富功能
Linux系统管理员/网络管理员(PDF版)
两本非常好的Linux系统学习的书 系统管理主要介绍Linux系统的结构、管理、命令等 网络管理主要从网络协议角度出发阐述Linux的网络功能
STM32F103中文数据手册
这个里面包含了STM32F103的各种型号的数据手册,方面理解
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2003-10-29 04:36
社区公告

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