当前位置:  编程技术>.net/c#/asp.net

http请求与响应的实例代码详解

    来源: 互联网  发布时间:2014-08-30

    本文导语:  若要从 Internet 请求数据并读取响应,请完成以下步骤 如果要访问像 Web 页这样的资源,请用要使用的资源的 URI 调用 WebRequest.Create 来创建 WebRequest,如下例所示。   代码示例: [C#] WebRequest wReq = WebRequest.Create("http://www./"); [Vi...

若要从 Internet 请求数据并读取响应,请完成以下步骤
如果要访问像 Web 页这样的资源,请用要使用的资源的 URI 调用 WebRequest.Create 来创建 WebRequest,如下例所示。
 

代码示例:
[C#]
WebRequest wReq = WebRequest.Create("http://www./");
[Visual Basic]
Dim wReq as WebRequest = WebRequest.Create("http://www./")
 

注意   .NET Framework 为以“http:”、“https:”和“file:”开头的 URI 提供特定于协议的 WebRequest 和 WebResponse 子代。若要访问其他协议,必须实现协议特定的 WebRequest 和 WebResponse 子代。有关更多信息,请参见编写可插接协议。
在 WebRequest 中设置任何所需的属性值。例如,若要支持身份验证,请将 Credentials 属性设置为 NetworkCredential 类的实例,如下例所示。
 

代码示例:
[C#]
wReq.Credentials =
   new NetworkCredential(UserName, SecurelyStoredPassword);
[Visual Basic]
wReq.Credentials = _
   New NetworkCredential(UserName, SecurelyStoredPassword)
 

大多数情况下,WebRequest 本身就已足够发送和接收数据。但是,如果需要设置特定于协议的属性,则应将 WebRequest 转换为特定于协议的实例。仅当处理 WebRequest 的 WebRequest 子代正确时,此类型转换才有效。例如,若要访问 HttpWebRequest 的 HTTP 特定的属性,请将 WebRequest 转换为 HttpWebRequest。下面的代码实例显示如何设置 HTTP 特定的 UserAgent 属性。
 

代码示例:
[C#]
if (wReq is HttpWebRequest)
{
   ((HttpWebRequest)wReq).UserAgent = ".NET Framework Example Client";
}
[Visual Basic]
If TypeOf wReq is HttpWebRequest Then
   Ctype(wReq,HttpWebRequest).UserAgent = _
      ".NET Framework Example Client"
End If
 

若要从 Internet 下载资源,请调用 WebRequest 的 GetResponse 方法。
若要将数据发送或上载到资源,请调用 WebRequest 的 GetRequestStream 方法,并使用结果 Stream 对象编写数据。完成上载后,必须使用 Stream.Close 方法关闭请求流。关闭流后,可以调用 GetResponse 以确保服务器已正确接收到数据。为 WebResponse 实例返回的实际类由所请求的 URI 方案决定。下面的代码示例显示如何使用 GetResponse 方法创建 WebResponse。
 

代码示例:
[C#]
WebResponse wResp = wReq.GetResponse();
[Visual Basic]
Dim wResp As WebResponse = wReq.GetResponse()
 

注意   调用 WebResponse 后,必须使用 WebResponse.Close 或 Stream.Close 关闭响应。如果不关闭每个响应,应用程序将用完与服务器的连接,而无法处理其他请求。
使用 WebResponse 的 GetResponseStream 方法从网络资源中获取包含响应数据的流。还可以访问 WebResponse 的属性或将 WebResponse 转换为特定于协议的实例以读取特定于协议的属性。例如,若要访问 HttpWebResponse 的 HTTP 特定的属性,请将 WebResponse 转换为 HttpWebResponse。下面的代码示例显示如何访问 HTTP 特定的属性和读取响应流。
 

代码示例:

[C#]
// Read an HTTP-specific property.
if (wResp is HttpWebResponse)
{
   DateTime Updated = ((HttpWebResponse)wResp).LastModified;
}
// Get the response stream.
Stream respStream = wResp.GetResponseStream();

// This example uses a StreamReader to read the entire response
// into a string and then writes the string to the console.
StreamReader reader = new StreamReader(respStream, Encoding.ASCII);
String respHTML = reader.ReadToEnd();
Console.WriteLine(respHTML);

// Close the response stream.
respStream.Close();
[Visual Basic]
' Read an HTTP-specific property.
If TypeOf wResp Is HttpWebResponse Then
  Dim updated As DateTime = Ctype(wResp,HttpWebResponse).LastModified
End If

' Get the response stream.
Dim respStream As Stream = wResp.GetResponseStream()

' This example uses a StreamReader to read the entire response
' into a string and then writes the string to the console.
Dim reader As StreamReader = _
   New StreamReader(respStream, Encoding.ASCII)
Dim respHTML as String = reader.ReadToEnd()
Console.WriteLine(respHTML)

' Close the response stream
respStream.Close()
 

如果应用程序只需要 WebResponse 中返回的标头信息并忽略任何返回的数据,则不必获取响应流。下面的代码示例显示如何从 Internet 主机返回服务器标头信息。
 

代码示例:
[C#]
WebRequest wReq = WebRequest.Create("http://www.");
WebResponse wResp = wReq.GetResponse();
string server = wResp.Headers["Server"];
[Visual Basic]
Dim wReq As WebRequest = WebRequest.Create("http://www.")
Dim wResp As WebResponse = wReq.GetResponse()
Dim server As String = wResp.Headers("Server")
 

读取响应中的数据后,必须使用 Stream.Close 方法关闭所有打开的流或使用 WebResponse.Close 方法关闭响应。
 

代码示例:
[C#]
wResp.Close();
[Visual Basic]
wResp.Close()
 

不必在响应流和 WebResponse 上都调用 Close 方法,但这样做并没有什么害处。WebResponse.Close 在关闭响应时调用 Stream.Close。
以下示例应用程序说明如何使用 WebRequest 和 WebResponse 类。
 

代码示例:

[C#]
using System;
using System.Net;
using System.Text;
using System.IO;

class ClientGet {
   public static void Main(string[] args)
   {
      if (args.Length < 1)
      {
        showusage();
        return;
      }

      // Get the URI from the command line.
      Uri site = new Uri(args[0]);

      // Create the request instance.
      WebRequest wReq = WebRequest.Create(site);

      // Set the HTTP-specific UserAgent property
      if (wReq is HttpWebRequest)
      {
        ((HttpWebRequest)wReq).UserAgent =
          ".NET Framework Example Client";
      }

      // Get the response instance
      WebResponse wResp = wReq.GetResponse();

      // Read an HTTP-specific property.
      if (wResp is HttpWebResponse)
      {
        DateTime updated = ((HttpWebResponse)wResp).LastModified;
      }

      // Get the response stream.
      Stream respStream = wResp.GetResponseStream();

     // This example uses a StreamReader to read the entire response
     // into a string and then writes the string to the console.
     StreamReader reader =
       new StreamReader(respStream, Encoding.ASCII);
     String respHTML = reader.ReadToEnd();
     Console.WriteLine(respHTML);

     // Close the response and response stream.
     wResp.Close();
   }
   public static void showusage()
   {
      Console.WriteLine("Attempts to GET a URI.");
      Console.WriteLine("rnUsage:");
      Console.WriteLine("  ClientGet URI");
      Console.WriteLine("Example:");
      Console.WriteLine("  ClientGet http://www./");
   }
}
[Visual Basic]
Imports System
Imports System.Net
Imports System.IO
Imports System.Text
Imports Microsoft.VisualBasic

Class ClientGet
Public Shared Sub Main()
  Dim Args() As String = System.Environment.GetCommandLineArgs()
  If Args.Length < 2 Then
    ShowUsage
    Return
  End If

  ' Get the URI from the command line.
  Dim site As Uri = New Uri(Args(1))

  ' Create the request instance.
  Dim wReq as WebRequest = WebRequest.Create(site)

  ' Set the HTTP-specific UserAgent property.
  If TypeOf wReq Is HttpWebRequest Then
     CType(wReq, HttpWebRequest).UserAgent = _
       ".NET Framework Example Client"
  End If

  ' Get the response instance.
  Dim wResp As WebResponse = wReq.GetResponse()

  ' Read an HTTP-specific property
  If TypeOf wResp is HttpWebResponse Then
    Dim updated As DateTime = CType(wResp,HttpWebResponse).LastModified
  End If

  ' Get the response stream.
  Dim respStream As Stream = wResp.GetResponseStream()

  ' Use the Stream. This example reads the entire response with a
  ' StreamReader into a string, and then writes the string to the
  ' console.
  Dim reader As StreamReader = _
    New StreamReader(respStream, Encoding.ASCII)
  Dim respHTML As String = reader.ReadToEnd()
  Console.WriteLine(respHTML)

  ' Close the response and response stream.
  wResp.Close()
End Sub

Public Shared Sub ShowUsage
  Console.WriteLine("Attempts to GET a URI")
  Console.WriteLine(Constants.vbCrLf & "Usage")
  Console.WriteLine("  ClientGet URI")
  Console.WriteLine("Example")
  Console.WriteLIne("  ClientGet http://www.")
End Sub
End Class


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php如何模拟处理http put请求?实例教程
  • 怎样实现android http-post方法实例说明
  • PHP模拟POST表单提交(支持HTTP、HTTPS)实例
  • 用socket建立http连接的一段实例程序,有点毛病,大家过来看看啊!!!
  • Android中发送Http请求(包括文件上传、servlet接收)的实例代码
  • java命名空间javax.xml.ws.http接口httpbinding成员方法: http_binding定义参考
  • 防病毒的HTTP代理服务器 HTTP Anti Virus Proxy
  • java命名空间java.net枚举proxy.type的类成员方法: http定义及介绍
  • HTTP开发工具包 http-kit
  • java命名空间javax.print.attribute.standard类referenceurischemessupported的类成员方法: http定义及介绍
  • Java HTTP客户端 http4j
  • java命名空间java.net类httpurlconnection的类成员方法: http_accepted定义及介绍
  • 如何设置服务器, 使http://localhost/hello.php变成http://www.example.com/hello.php生效?
  • java命名空间java.net类httpurlconnection的类成员方法: http_unauthorized定义及介绍
  • Java HTTP 客户端开发包 jcabi-http
  • java命名空间java.net类httpurlconnection的类成员方法: http_created定义及介绍
  • linux c socket http编程 返回http消息体出错!
  • java命名空间java.net类httpurlconnection的类成员方法: http_forbidden定义及介绍
  • 请问如何在c程序里调用一段http地址,比如http://test/reload.jsp
  • java命名空间java.net类httpurlconnection的类成员方法: http_gone定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net类httpurlconnection的类成员方法: http_ok定义及介绍
  • http协议中文分词 http-scws
  • java命名空间java.net类httpurlconnection的类成员方法: http_conflict定义及介绍
  • MM求助:怎样多线程下载http://java.sun.com上的东东? 用http方式,谢谢了.
  • java命名空间java.net类httpurlconnection的类成员方法: http_reset定义及介绍
  • 异步 HTTP 客户端开发包 android-async-http


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3