2012-04-10 43 views
3

我想通過包含轉義字符的字符串實例化新的Uri。新的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

+0

這裏是你的答案: http://stackoverflow.com/questions/2320533/system-net-uri-with-urlencoded-characters – 2012-08-22 18:25:44

回答

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