gpt4 book ai didi

c# - 关于在 C# 中访问带有转义字符的 URL 的问题

转载 作者:行者123 更新时间:2023-11-30 22:43:52 35 4
gpt4 key购买 nike

我遇到了 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();

为长网址道歉在这种情况下:this.url 是正确的

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

而 Uri 对象中的 url 不是

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

注意“%2F”-->“/”的区别。如果我将 this.url 直接输入 WebRequest 并且我从 S3 服务器收到 403 错误,也会发生同样的情况,因为签名不再匹配。

有没有办法阻止这种转变的发生?

编辑:因为这是一个桌面应用程序(抱歉之前没有提到)HTTPUtilities 不可用但是 URI 类有类似的功能所以我试过了

this.url = Uri.EscapeUriString(this.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 方法。

关于c# - 关于在 C# 中访问带有转义字符的 URL 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3715882/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com