本文翻译于:https://msdn.microsoft.com/en-us/library/456dfw4f(v=vs.110).aspx

下列程序描述的步骤用于从服务器请求一个资源,例如,一个Web页面或文件。必须由URI标识的资源。

从主机服务器请求数据:

1、创建一个WebRequest实例通过调用创建URI的资源。

  WebRequest request = WebRequest.Create("http://www.contoso.com/");

note:

  .net 框架提供了特定于协议的类来自WebRequest和WebResponse uri以“http:”开始,“https:“,“ftp:”,“文件:”。使用其他协议来访问资源,您必须实现特定于协议的类来自WebRequest WebResponse。有关更多信息,请参见编程可插协议。

2、设置在WebRequest任何你需要的属性值。例如,要启用身份验证,设置凭证属性NetworkCredential类的一个实例。

  request.Credentials = CredentialCache.DefaultCredentials;

  在大多数情况下,WebRequest类足以接收数据。然而,如果你需要设置特定于协议的特性,你必须把WebRequest特定于协议的类型。例如,访问HTTP-specific HttpWebRequest的性质,把WebRequest HttpWebRequest参考。以下代码示例展示了如何设置HTTP-specific UserAgent属性。

  ((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";

3、向服务器发送请求,调用GetResponse。返回的WebResponse对象的实际类型是由请求的URI的方案。

  WebResponse response = request.GetResponse();

  你完成了一个WebResponse对象后,您必须关闭它通过调用方法。或者,如果您得到的响应流响应对象,您可以关闭流通过调用流。关闭方法。如果你不关闭响应或流,您的应用程序可以运行的连接到服务器并成为无法处理其他请求。

4、您可以访问的属性WebResponse或铸WebResponse读特定于协议的特定于协议的实例属性。例如,访问HTTP-specific HttpWebResponse的性质,把WebResponse HttpWebResponse参考。以下代码示例展示了如何显示状态信息发送响应。

  Console.WriteLine (((HttpWebResponse)response).StatusDescription);

5、得到包含响应由服务器发送的数据流,使用GetResponseStream WebResponse的方法。

  Stream dataStream = response.GetResponseStream ();

6、阅读响应的数据之后,您必须使用流关闭响应流。关闭方法或关闭使用WebResponse响应。关闭方法。没有必要调用关闭方法在响应流和WebResponse,但这样做并不是有害的。WebResponse。比分接近的流。关闭时关闭响应。

  response.Close();

Demo:
 using System;
using System.IO;
using System.Net;
using System.Text; namespace Examples.System.Net
{
public class WebRequestGetExample
{
public static void Main ()
{
// Create a request for the URL.
WebRequest request = WebRequest.Create (
"http://www.contoso.com/default.html");
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials;
// Get the response.
WebResponse response = request.GetResponse ();
// Display the status.
Console.WriteLine (((HttpWebResponse)response).StatusDescription);
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream ();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader (dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd ();
// Display the content.
Console.WriteLine (responseFromServer);
// Clean up the streams and the response.
reader.Close ();
response.Close ();
}
}
}

C#:使用WebRequest类请求数据的更多相关文章

  1. 基于AFNetWorking 3.0封装网络请求数据的类

    对于使用 AFNetworking 的朋友来说,很多朋友都是直接调用 AFNetworking的 API ,这样不太好,无法做到全工程统一配置. 最好的方式就是对网络层再封装一层,全工程不允许直接使用 ...

  2. Struts2 请求数据的自动封装 及 自定义转换器类

    请求数据自动封装: 实现原理:使用了参数拦截器.struts-default.xml中 <interceptor name="params" class="com. ...

  3. JavaWeb之如何把请求数据转成实体类

    JavaWeb之如何把请求数据转成实体类 自己写个工具类加入下面两个静态方法 自定一个注解类DateTimeFormatting 调用方式User user = util.ObjectFromMap( ...

  4. 09.VUE学习之watch监听属性变化实现类百度搜索栏功能ajax异步请求数据,返回字符串

    cmd下安装axios npm install axios 安装好后,会多出node_modules文件夹 思路: 监听data里的word改变时,发送ajax异步请求数据, 把返回的数据赋值给dat ...

  5. 利用WebRequest类上传文件

    说明:1.WebRequest类是一个抽象类,所以上传类实际使用的是其子类 2.打开Fiddler软件,监视正常网页的文件上传,可以看到http协议的请求和响应信息,简略说明 (第一行:请求说明 PO ...

  6. C#,WebRequest类、HttpWebRequest类与HttpRequest类的区别

    C#,WebRequest类和HttpWebRequest类的区别? httpWebRequest是webRequest的子类,httpWebRequest是基于http协议的 . HttpWebRe ...

  7. C# http请求数据

    http中get和post请求的最大区别:get是通过URL传递表单值,post传递的表单值是隐藏到 http报文体中 http以get方式请求数据 /// <summary> /// g ...

  8. Java服务器对外提供接口以及Android端向服务器请求数据

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...

  9. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

随机推荐

  1. Spring多种方式实现依赖注入

    平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...

  2. python 爬取知乎图片

    先上完整代码 import requests import time import datetime import os import json import uuid from pyquery im ...

  3. 【python】python环境搭建

    本文主要用于记录python环境的搭建一些不常用的命令,其他的安装步骤在其他大师可以找到就不详细列出了.(注:以下操作都是在Ubuntu14.04LTS版本) 一.环境查询相关 1.查询当前pytho ...

  4. CentOS7的systemctl使用

    CentOS 7开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替. 1.原来的 service 命令与 sys ...

  5. 【Linux命令】nohup和&差异,查看进程和终止进程!

    最近在开发dueros的技能,官方提供的PHPSDK中有多个实力,而运行实例的命令如下是 nohup php -S 0.0.0.0:8029 myindex.php & 从命令来看,肯定是在8 ...

  6. GoF23种设计模式之行为型模式之策略模式

    传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 1概述           定义一系列算法,把它们一个个都封装起来,并且让它们可以相互 ...

  7. Leetcode 81. 搜索旋转排序数组 II

    题目链接 https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/description/ 题目描述 假设按照升序排序的数 ...

  8. c++ override 关键字

    描述:override保留字表示当前函数重写了基类的虚函数. 目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的):2.强制编译器检查 ...

  9. UVa 1452 递推 Jump

    约瑟夫变形,先计算出3个数时,最后三个数字的编号. 然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号. 递推公式都是一样的. #include <iostream> #in ...

  10. 转:获取GridView中RowCommand的当前索引行

    获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...