HTTP-GET-Anfragen mit URL-kodierten Schrägstrichen
Der Zugriff auf URLs mit URL-kodierten Schrägstrichen in .NET stellt eine Herausforderung dar. Anstatt die URL-Kodierung beizubehalten, versucht das Framework, sie zu kanonisieren, was zu einer ungültigen HTTP-Anfrage führt.
Um dieses Problem zu beheben, gibt es einen Workaround:
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; FieldInfo flagsFieldInfo = typeof(Uri).GetField("m_Flags", BindingFlags.Instance | BindingFlags.NonPublic); ulong flags = (ulong) flagsFieldInfo.GetValue(uri); flags &= ~((ulong) 0x30); flagsFieldInfo.SetValue(uri, flags); }
Dieser Hack manipuliert den internen URI Flags, um die URL-Kodierung beizubehalten und HTTP-GET-Anfragen mit URL-kodierten Schrägstrichen zu ermöglichen. Es ist jedoch zu beachten, dass dieser Ansatz möglicherweise nicht mit zukünftigen Framework-Versionen kompatibel ist.
Das obige ist der detaillierte Inhalt vonWie kann ich HTTP-GET-Anfragen mit URL-codierten Schrägstrichen in .NET stellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!