使用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中文網其他相關文章!