新的Uri保留转义字符

3
我想根据包含转义字符的字符串实例化一个新的Uri。
Dim sUri as String = "http://foo.bar/path/to/file_with%2fpercent?query=params"
Dim uUri as New Uri(sUri)
Console.WriteLine(uUri)

>>>>

http://foo.bar/path/to/file_with/percent?query=params

我应该如何保留 %2f 符号?

这是你的答案:https://dev59.com/q3E95IYBdhLWcg3watM3 - dr. evil
1个回答

0

使用以下代码(注意:仅适用于绝对URL!):

Sub DownloadFileToDisc (downloadUrl As String)
    Dim MyWebClient As New System.Net.WebClient()
    Dim downloadUri As New UriWithCorrectDataEncoding(downloadUrl)
    MyWebClient.DownloadFile(downloadUri, localFilePath)
End Sub

''' <summary>
''' Original behaviour of System.Uri.ToString returns unescaped characters in query parameters - a behaviour which corrupts URLs like http://domain.com/?forwardurl=module%3dInvoice%26action%3dCreatePDF4Mail%26return_module%3dInvoice into http://domain.com/?forwardurl=module=Invoice&amp;action=CreatePDF4Mail&amp;return_module=Invoice
''' </summary>
''' <remarks></remarks>
Private Class UriWithCorrectDataEncoding
    Inherits Uri

    Public Sub New(url As String)
        MyBase.New(url)
    End Sub

    Public Overrides Function ToString() As String
        Return MyBase.AbsoluteUri
    End Function

End Class

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接