笔记7:Uri类



一、URI
          URI为统一资源标识符Uniform Resource Identifier的简称,代表网络上的某个特定网站或是网络服务, 如FTP、新闻组等:

        Protocol://hostname:portnumber/path/filename
         Protocol表示所使用的网络协议, 如http、ftp等
         hostname为提供网络资源的特定服务器主机名,代表一个特定网站的名称,或是主机本身的IP地址, 如http://www.163.com,http://10.195.194.34等
         portnumber端口号
         path为文件所存放的文件夹路径名称
         filename则为文件的名称。




二、URI类
          Uri类通过接收代表URI字符串的表达式,建立一个封装特定URI的实体对象。
          它提供相关属性或方法成员,可以针对URI的各个组成部分进行拆解,进行细部的操作。

          1、定义
               URI是个实体类,定义有两个方式。
                Dim myUri As New Uri( “http://www.163.com” )
                    参数若不是合法URI,将引异常。
               Public Sub New( ByVal baseUri As Uri, ByVal relativeUri As String)
                   baseUri 基底URI,包含完整的通信协议名称及网域主机名,甚至包含特定的路径表示字符串;
                   relativeUri相对路径

        例:http://6.scdx3.crsky.com/soft/201604/kugou-v8.0.46.zip
               http://6.scdx3.crsky.com                        可以是baseURI,
               http://6.scdx3.crsky.com/soft/201604    也可以是baseURI
               soft/201604/kugou-v8.0.46.zip              是相对路径URI
   
             当baseURI与relativeURI合并成为一个完整URI时,其中相互重叠的部分被舍弃。

        Uri类提供几个关于解析URI路径的相关属性成员及方法,如:
          AbsoluteUri用以取得完整的URI名称,包含域名及完整的文件路径。
          AbsolutePath则返回URI定义当中的path及FileName合并字符 串。

                                        

Public Class Form1
    Private Sub btnURI_Click(sender As Object, e As EventArgs) Handles btnURI.Click
        Dim u1 As New Uri(txtBase.Text)
        Dim u2 As New Uri(u1, txtRelative.Text)


        txtPractice.Text = "u2的绝对URI:    " & u2.AbsoluteUri & vbCrLf &
                           "u2的绝对URIPath:" & u2.AbsolutePath & vbCrLf &
                           "u1的绝对URI:    " & u1.AbsoluteUri & vbCrLf &
                           "u1的绝对URIPath:" & u1.AbsolutePath


    End Sub
End Class

        2、Uri类的属性成员

        实例:http://6.scdx3.crsky.com/soft/201604/kugou-v8.0.46.zip,每个属性的结果在对应后面。

        AbsolutePath    URl的绝对路径, /soft/201604/kugou-v8.0.46.zip
        AbsoluteUri     绝对URI, http://6.scdx3.crsky.com/soft/201604/kugou-v8.0.46.zip
        Authority       服务器的域名系统(DNS)主机名或IP地址,以及端口编号, 6.scdx3.crsky.com
       DnsSafeHost     可安全使用于DNS解析的未转义主机名, 6.scdx3.crsky.com
       Fragment        转义URI的片段
       Host            主机部分, 6.scdx3.crsky.com
       HostNameType    传回URI中指定的主机名的类,2(即http)
       IsAbsoluteUri       Uri实例是否为绝对的,True
       IsDefaultPort       URI的端口数值是否为这个配置的默认值,True
       IsFile              Uri是否为文件URI,False
       Is Loopback         Uri是否参考本端主机,False
       IsUnc               Uri是否为通用命名约定(Universal Naming Convention, UNC)路径,False
       LocalPath           文件名的本机換作系统表示, /soft/201604/kugou-v8.0.46.zip
       OriginalString    传递给Uri表达函数的原始UR1字符, http://6.scdx3.crsky.com/soft/201604/kugou-v8.0.46.zip
       PathAndQucry      以问号(?)分URI的AbsolutePath和Query域性, /soft/201604/kugou-v8.0.46.zip
       Port          uri的端口编号, 80
       Query         URI所包含的任何査询信息,””(为空)
       Scheme        URI的配置名称,http
       Segments           数组,包含构成指定UR1的路径区段,结果详见下面
       UserEscaped        URI字符串是在Uri实例建立之前已完全转义,False
      Userlnfo           与指定URI关联的用户名称.密码或其他用户特定的信息,””(为空)

    说明:
    (1)HostNameType主机名的类
             Public Readonly Property HostNameType As UriHostNameType
            返回值是一个UriHostNameType列举类型,项目如下:
               Basic    主机已设置但无法判断类型
               Dns      主机名为域名系统(DNS)类型主机名
               IPv4     主机名是因特网通倍协议(〖P) 4版主机地址
               IPv6     主机名是因特网通信协议(IP) 6版主机地址
               Unknown  无法提供主机名类型
        一般用Uri.CheckHostName(String)来检测,返回UriHostNameType.Basic…等,对应的值为0,1,2…

        (2) Scheme URI配置的名称,如ftp、http等,情况如下:
            File     资源是本机计算机上的文件
            ftp      通过FTP存取资源
            Gopher   通过Gopher通信协议存取资源
            http     通过HTTP存取资源
            https    通过SSL加密的HTTP来存取资源
            mailto   资源是电子邮件地址,并通过SMTP存取
            nntp     通过NNTP存取资源

       (3) Segments  URI绝对路径的“区段”字符串所构成的数组对象
             “区段”是从第一个字符直到斜线“/”或路径结尾的部分,视为第一个区段,然后每个额外区段都是自上一个区段后的第一个字符开始,并以下一个斜线或路径结尾结束。
      例:http://6.scdx3.crsky.com/soft/201604/kugou-v8.0.46.zip
              Segments.Count:4
              Segments(0):/
              Segments(1): soft/
              Segments(2): 201604/
              Segments(3): kugou-v8.0.46.zip


     例:绝对 URI:   http://www.contoso.com/Chapters/Chapter1/Sections/Section1.htm
           绝对路径:   /Chapters/Chapter1/Sections/Section1.htm
           段:             /Chapters/Chapter1/Sections/Section1.htm

          绝对 URI:     http://www.contoso.com/Chapters/Chapter1/Sections/Section1.htm#page1?answer=NO
          绝对路径:     /Chapters/Chapter1/Sections/Section1.htm
          段:                /Chapters/Chapter1/Sections/Section1.htm

     请注意,由于绝对路径以“/”开始,因此第一个段就是这个斜杠而不包括其他内容

     (4)Query  返回URI中任何査询字符串
             即问号“?”后方所连接的所有条件值,
          例:http://www.silukee.com/SearchBook.aspx?keyword=23&t=1
                 Query:    keyword=23&t=1





二、UriBuilder 类
          Uri类对象一旦建立之后,就无法修改其URI值,uriBuilder类提供用以调整URI的Uri类版本,可视为一种动态的Uri。

         建立UriBuilder对象(两种)
       1、由各部分来新建

             UriBuilder类提供比Uri更为弹性的表达式,其中包含分开指定通信及路径信息的参数版本:

         Public Sub New( ByVal scheme As String, ByVal host As String, ByVal port As Integer, ByVal pathValue As String)
          scheme代表URI协议;
          host则是主机名;
          port为连接的通信端口;
         pathValue 则是URI的路径名称。

          例:New URIBuilder(“http”,” news.163.com”,”80”,” 16/0507/09/BMF28H8200011229.html”)


       2、由存在的URI新建
             除了指定URI的个别部分,另外一个版本定义的表达式接收已建立完成的Uri类对象,建立新的UriBuilder对象:

         Public Sub New( ByVal uri As Uri )
           UriBuilder与Uri类区别,UriBuilder提供的属性值同时具有“读/写”权限;
          通过调整属性值,达到修正URI内容的目的。
          UriBuilder另外提供一个Uri属性,这个属性返回UriBuilder类对象所建立的Uri类实体。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值