使用 URL 编码的斜杠发送 GET 请求
尝试将 GET 请求发送到包含 URL 编码的斜杠(例如,http://example.com//),您可能会遇到网络客户端将其转换为无效 URL 的问题(例如,http://example.com//)。
要解决此问题,以下代码通过强制将路径和查询视为规范来提供解决方法:
Uri uri = new Uri("http://example.com/%2F"); ForceCanonicalPathAndQuery(uri); using (WebClient webClient = new WebClient()) { webClient.DownloadData(uri); } void ForceCanonicalPathAndQuery(Uri uri){ string paq = uri.PathAndQuery; // need to access PathAndQuery FieldInfo flagsFieldInfo = typeof(Uri).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic); ulong flags = (ulong) flagsFieldInfo.GetValue(uri); flags &= ~((ulong) 0x30); // Flags.PathNotCanonical|Flags.QueryNotCanonical flagsFieldInfo.SetValue(uri, flags); }
该脚本的工作原理是操纵 Uri 对象的内部标志,确保它将路径和查询视为规范,在执行过程中不需要任何进一步的转换请求。
以上是如何正确发送带有 URL 编码斜杠的 GET 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!