使用HttpWebRequest以及HttpWebResponse读取Http远程文件

jackyhwei 发布于 2010-08-15 21:24 点击: 1054次 

来自:博客园

在以前我们经常是使用XmlHttp来获取某个网页的内容,现在.Net时代已经来临,是否我们还要使用XMLHttp来获取呢?答案当然是不,因为微软已经帮我们写好了一些容易使用的类,而这些类就放在System.Net命名空间中。

TAG: webservice  XMLHTTP  

在以前我们经常是使用XmlHttp来获取某个网页的内容,现在.Net时代已经来临,是否我们还要使用XMLHttp来获取呢?答案当然是不,因为微软已经帮我们写好了一些容易使用的类,而这些类就放在System.Net命名空间中。

这篇文章将会使用到两个类:System.Net.HttpWebRequest以及System.Net.HttpWebResponse,它们负责发送以及接收请求,我们现在就来试一下获取http://www.rosoo.net的首页代码,以下以代码作示例。

首先建立一个HttpWebRequest实例,我们不用使用HttpWebRequest类的构造函数,而是使用WebRequest类提供的静态方法Create,它的原型如下:

public static WebRequest Create(string);
public static WebRequest Create(uri);

一般我们可以使用第一种方法,就是直接将网址传进去,如果协议为http或者https,它会返回一个HttpWebRequest实例:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create( "http://www.rosoo.net");

因为它返回的实例类型是WebRequest而不是HttpWebRequest,因此记得要进行强制类型转换.
接下来建立一个HttpWebResponse以便接收服务器发送的信息,它是调用HttpWebRequest.GetResponse来获取的:

HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();

如果webResponse.StatusCode的值为HttpStatusCode.OK,表示成功,那你就可以接着读取接收到的内容了:
Stream stream = webResponse.GetResponseStream(); // 获取接收到的流

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

// 建立一个流读取器,可以设置流编码,不设置则默认为UTF-8

string content = streamReader.ReadToEnd();// 读取流字符串内容

streamReader.Close();// 关闭相关对象
webResponse.Close();

大功告成,我们已经将无忧脚本首页内容保存在content这个字符串变量中了,很简单吧?当然,根据需要还有更多设计方法可以选择,比如使用Socket,那还提供了System.Net.Sockets命名空间中的类,学.Net的朋友有事没事逛逛MSDN,肯定会有更多的收获。

(mugua)

 

转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201008/9976.html]
 

使用HttpWebRequest以及HttpWebResponse读取Http远程文件的更多相关文章

  1. 在Linux系统中使用Vim读写远程文件

    大家好,我是良许. 今天我们讨论一个 Vim 使用技巧--用 Vim 读写远程文件.要实现这个目的,我们需要使用到一个叫 netrw.vim 的插件.从 Vim 7.x 开始,netrw.vim 就被 ...

  2. C#使用HttpWebRequest和HttpWebResponse上传文件示例

    C#使用HttpWebRequest和HttpWebResponse上传文件示例 1.HttpHelper类: 复制内容到剪贴板程序代码 using System;using System.Colle ...

  3. MeteoInfoLab脚本示例:读取远程文件

    利用Unidata netCDF Java库对远程文件的读取能力(OpenDAP, ADDE, THREDDS等),可以读取远程文件并绘图.脚本程序: fn = 'http://monsoondata ...

  4. PHP读取远程文件的三种方法

    file_get_contents <?php$url = http://www.xxx.com/;$contents = file_get_contents($url);//如果出现中文乱码使 ...

  5. http方式获取远程文件内容

    public class HttpServer { /// <summary> /// 读取远程文件的内容 /// </summary> /// <param name= ...

  6. c# HttpWebRequest 与 HttpWebResponse

    如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧.本文章会对Http请求时的Get和Post方式进行详细的说明,在请求时的参数怎么发送,怎么带Cookie,怎么设置证 ...

  7. .net 直接输出远程文件到浏览器和下载文件保存到本机

    利用了xmlhttp,实现代码比较简单具体实现如下: 首先bin文件引入,com->microsoft xml v3.0 具体代码如下: protected void Button1_Click ...

  8. C#_抓包HttpWebRequest跟HttpWebResponse

    1.第一招,根据URL地址获取网页信息  这招是入门第一式, 特点: 1.最简单最直观的一种,入门课程. 2.适应于明文,无需登录,无需任何验证就可以进入的页面. 3.获取的数据类型为HTML文档. ...

  9. c# HttpWebRequest与HttpWebResponse(转)

    如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧.本文章会对Http请求时的Get和Post方式进行详细的说明,在请求时的参数怎么发送,怎么带Cookie,怎么设置证 ...

随机推荐

  1. windows和linux中检查端口是否被占用

    一.windows 1.查询端口占用情况 cmd > netstat -ano 2.查询8080端口是否被占用 cmd > netstat -ano|findstr 8080 3.查询哪个 ...

  2. java 经典题

    [程序1]    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?    //这是一个菲波拉契数列问 ...

  3. Centos7升级gcc学习笔记

    概述 最近在学习<深入应用C++11-代码与优化与工程级应用>,我的gcc版本是gcc-4.8.5是支持C++11的,但是我在作者的github上看了一些C++例子,其中有些是C++14的 ...

  4. 小白日记47:kali渗透测试之Web渗透-XSS(一)

    XSS [推荐书籍:XSS跨站脚本攻击剖析与防御] xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/ ...

  5. .net重启iis线程池和iis站点程序代码分享

    重启站点: /// <summary> /// 根据名字重启站点.(没重启线程池) /// </summary> /// <param name="sitena ...

  6. KDE声音服务器 arts

    KDE声音服务器 arts arts介绍arts是KDE的核心声音系统,支持多音频流.全双工.网络声音请求.ALSA与OSS驱动后端.JACK声音服务器后端等扩展,它既是声音服务器,也 提供一套音频软 ...

  7. 剑指Offer22 判断数组是否为某二叉搜索树的后序遍历

    /************************************************************************* > File Name: 22_Sequen ...

  8. 【转】使用nmon监控suse或linux操作系统

    目的:使用nmon监控操作系统的内存,CPU等症状 nmon介绍:nmon 工具可以为AIX和Linux性能专家提供监视和分析性能数据的功能,其中包括CPU,内存,IO,free空间,页面空间页面速度 ...

  9. 《JavaScript高级程序设计》笔记——关于继承

    继承在JavaScript中是一种“奇葩”的存在,因为其本身并没有类(class)的概念(ES5),所以只能用其他方式(原型链.构造函数.对象实例)来模拟继承的行为.既然是模拟,那就应该是想办法实现继 ...

  10. C#微信开发回复信息

    using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;usi ...