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

我有一个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方法。

回答:

%2F在第一个URL中正在正确转换为/
为了解决这个问题,您必须首先编码HttpUtility.UrlEncode()以确保编码%

Uri myUri = new Uri(HttpUtility.UrlEncode(this.url)); 

以上是 有关访问C#中带有转义字符的URL的问题# 的全部内容, 来源链接: utcz.com/qa/262817.html

回到顶部