Heim >Backend-Entwicklung >C++ >Wie sende ich GET-Anfragen mit URL-codierten Schrägstrichen korrekt?
GET-Anfragen mit URL-kodierten Schrägstrichen senden
Beim Versuch, eine GET-Anfrage an eine URL zu senden, die einen URL-kodierten Schrägstrich enthält (z. B. , http://example.com//), kann es zu einem Problem kommen, bei dem der Webclient die URL in eine ungültige URL übersetzt (z. B. http://example.com//).
Um dieses Problem zu beheben, bietet der folgende Code eine Problemumgehung, indem er erzwingt, dass der Pfad und die Abfrage als kanonisch behandelt werden:
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); }
Dies Das Skript manipuliert die internen Flags des Uri-Objekts und stellt so sicher, dass es den Pfad und die Abfrage als kanonisch behandelt und keine weiteren Transformationen während der Anfrage erfordert.
Das obige ist der detaillierte Inhalt vonWie sende ich GET-Anfragen mit URL-codierten Schrägstrichen korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!