WebClientt和HttpWebRequest访问远程数据

HttpWebRequest类是WebRequest类的一个子类,用于发送HTTP请求,请求返回结果用HttpResponse类表示;

WebClient类是Sliverlight中另一个可用于发送HTTP请求的类,实际上是基于WebRequest类实现的,可以将它看做是HttpWebRequest的一个高级封装。

大部分HTTP访问二者都可以实现,但不同的是:

1.HttpWebRequest使用基于代理的异步编程模型,WebClient使用基于事件的异步编程模型,基于事件的编程模型使用起来通常更为方便。

2.HTTP响应返回引发的WebClient回调是在UI线程中调用的,而HttpWebRequest回调是在其他线程中调用的,UI线程中的回调可以直接操作UI元素、更新UI,而其他线程中的回调则必须通过线程调用才能操作UI。因而WebClient更适合需要更新UI的场景。

3.WebClient类内置了一系列的事件,可以用来监视数据的上传/下载进度并反馈给应用程序;HttpWebRequest则不具备此功能。

4.相对而言,HttpWebRequest更为底层,可以实现对HTTP请求信息更为灵活的控制,而HttpWebRequest对一些高级HTTP请求可能无能为力。

WebClient类常用方法

DownloadStringAsync/UploadStringAsync,以字符串形式下载/上传数据

OpenReadAsync/OpenWriteAsync,以流形式下载/上传数据

以上4个方法对应相应的异步操作完成事件:DownloadStringCompleted、UploadStringCompleted、OpenReadCompleted和OpenWriteCompleted。

HttpWebRequest类常用方法

BeginGetRequestStream/EndGetRequestStream,开始/结束对提供请求数据流的异步请求。

BeginGetResponse/EndGetReponse,开始/结束对远程数据的异步请求。

转载于:https://www.cnblogs.com/hxxy2003/archive/2012/07/21/2603067.html

webclientt和httpwebrequest相关推荐

  1. HttpWebRequest类之基本定义

    HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程 ...

  2. C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  3. 解决.net webservice的WebClient或HttpWebRequest首次连接缓慢问题

    [编程环境]Visual Studio 2010, NET4.0 [开发语言]C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响 [问题描述] 使用HttpWebRequ ...

  4. 使用C#的HttpWebRequest模拟登陆网站

    很久没有写新的东西了,今天在工作中遇到的一个问题,感觉很有用,有种想记下来的冲动. 这篇文章是有关模拟登录网站方面的. 实现步骤: 启用一个web会话 发送模拟数据请求(POST或者GET) 获取会话 ...

  5. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

    这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现.在很多地方都需要验证用户身份才可 ...

  6. C#网页数据采集(三)HttpWebRequest

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  7. httpWebRequest 错误

    在模拟提交的时候400错误多是由于客户端的请求不完整照成的, 可以参考以下代码将请求信息补充完整 <textarea cols="50" rows="15" ...

  8. [C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法

    编写者:郑昀@UltraPower 关键字:HttpWebRequest, SSL,X509Certificate dotNet  Framwork 1.1 编写时间:2005-3-29 WSE 2. ...

  9. C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse

    上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...

最新文章

  1. ios MKNetworkKit 的使用
  2. 【ZJOI2013】k大数查询 BZOJ 3110
  3. 网站jcms流程分析
  4. iOS 选择的照片或者拍照的图片上添加日期水印
  5. 网易云信集成视频教程(三):如何通过SDK实现自定义消息?
  6. 简化MVVM属性设置和修改 - .NET CORE(C#) WPF开发
  7. ffmpeg中文开发手册_快速调用复杂命令,支持中文注释,命令行备忘工具navi两天就火了...
  8. 条件转移指令和无条件转移指令练习
  9. php openssl做什么,php开启openssl的方法
  10. 多媒体技术基础及应用
  11. Mac 登陆Linux云服务器方法
  12. Eclipse的自动build选项,制造时别忘了选上~
  13. oracle常用插入一条语句,Oracle:用一条 INSERT 语句批量插入多条记录
  14. MutationObserver监听页面是否加载完成
  15. Arduino驱动IIC/I2C LCD1602模块显示
  16. c语言复杂程序100例,经典C语言程序100例(1-10)
  17. 计算机组成原理bzc指令,计算机组成原理课程设计-09级.ppt
  18. android汉字笔顺数据库,汉字笔顺学习(汉字笔顺学习app)V1.80.91009 安卓版
  19. FITC-LCA 绿色荧光标记小扁豆凝集素
  20. Python 爬虫 性能 相关( asyncio 模块 --- 高性能爬虫 )

热门文章

  1. Hangfire源码解析-如何实现可扩展IOC的?
  2. Android中的消息机制
  3. python3之日期和时间(转载)
  4. LNMP一键安装脚本(第二版)
  5. react-natvie-fetch-blob使用
  6. 【转】文件读写NDK(或Linux)
  7. VirtualBox中出现UUID have already exists 解决方法
  8. DIV+CSS布局图片加阴影效果方法
  9. 恢复qsecofr密码
  10. jQuery学习笔记--目录