ホームページ >バックエンド開発 >C++ >.NET で URL エンコードされたスラッシュを使用して HTTP GET リクエストを行うにはどうすればよいですか?

.NET で URL エンコードされたスラッシュを使用して HTTP GET リクエストを行うにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 07:06:39815ブラウズ

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

URL エンコードされたスラッシュを含む HTTP GET リクエスト

.NET で URL エンコードされたスラッシュを含む URL にアクセスすると、問題が発生します。 URL エンコードを保持する代わりに、フレームワークは URL エンコードを正規化しようとするため、無効な HTTP リクエストが発生します。

この問題を解決するには、次の回避策があります。

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

このハックは内部 URI を操作します。フラグを使用して URL エンコードを維持し、URL エンコードされたスラッシュを含む HTTP GET リクエストを許可します。ただし、このアプローチは将来のフレームワーク バージョンと互換性がなくなる可能性があることに注意してください。

以上が.NET で URL エンコードされたスラッシュを使用して HTTP GET リクエストを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。