• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

有关访问C#中带有转义字符的URL的问题#

c/c++ 来源:paullb 7次浏览

我有一个URL正在被处理时自动转换的问题。有关访问C#中带有转义字符的URL的问题#

Uri myUri = new Uri(this.url); 

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri); 
    request.ProtocolVersion = HttpVersion.Version10; 
    request.Method = "GET"; 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

道歉了很长的URL 在这种情况下:this.url是正确的

(https://zencoder-live.s3.amazonaws.com:443/ec03a97b1f726d8ee65774313a100db5%2Fa54779efdf5d1f64ac82954c870beb12.mp4?Signature=nrc0U65Pe3PiORokhAscndLdP68%3D&Expires=1284625412&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ) 

尽管Uri对象里面的网址是不是

({https://zencoder-live.s3.amazonaws.com/ec03a97b1f726d8ee65774313a100db5/a54779efdf5d1f64ac82954c870beb12.mp4?Signature=nrc0U65Pe3PiORokhAscndLdP68=&Expires=1284625412&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ} 

注意的差异“ %2F“ – >”/“。 同样的情况发生,如果我将这个.url直接提供给WebRequest,并且从S3服务器收到403错误,因为签名不再匹配。

有没有办法来防止这种转变发生?

编辑: 由于这是一个桌面应用程序(对不起,早不提)HTTPUtilities不可用,但URI类也有类似的功能,所以我想,

this.url = Uri.EscapeUriString(这一点。 URL); 和this.url被设置为:

https://zencoder-live.s3.amazonaws.com:443/e09517d7841a9047f9ff7a2f015d2596%252F1e8e7e8e1a85665bc7e9b146ce444a88.mp4?Signature=6bs5vfOBUDeHeX2HdmrvVGDnDjE%253D&Expires=1284627002&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ 

,然后从HttpWebRequest对象中:

https://zencoder-live.s3.amazonaws.com/e09517d7841a9047f9ff7a2f015d2596%252F1e8e7e8e1a85665bc7e9b146ce444a88.mp4?Signature=6bs5vfOBUDeHeX2HdmrvVGDnDjE%253D&Expires=1284627002&AWSAccessKeyId=AKIAIIEXNN2J4YDTRUVQ 

的HttpWebRequest对象并没有改变它在所有所以URI仍然不正确。 %2F被转换为%252F,并且在创建Uri对象时不会转换回%2F。

===========解决方案如下:

您可能想看看HttpUtility类,它提供了UrlDecode/UrlEncode方法。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)