Maison >développement back-end >C++ >Comment puis-je effectuer des requêtes HTTP GET avec des barres obliques codées en URL dans .NET ?

Comment puis-je effectuer des requêtes HTTP GET avec des barres obliques codées en URL dans .NET ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 07:06:39819parcourir

How Can I Make HTTP GET Requests with URL-Encoded Slashes in .NET?

Requêtes HTTP GET avec des barres obliques codées en URL

L'accès aux URL avec des barres obliques codées en URL dans .NET pose un défi. Au lieu de conserver l'encodage de l'URL, le framework tente de le canoniser, ce qui entraîne une requête HTTP invalide.

Pour surmonter ce problème, une solution de contournement existe :

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);
}

Ce hack manipule l'URI interne indicateurs pour conserver le codage de l'URL, autorisant les requêtes HTTP GET avec des barres obliques codées en URL. Cependant, il convient de noter que cette approche pourrait ne pas être compatible avec les futures versions du framework.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn