私はWebアプリケーションにコールアウトする必要があるC#アプリケーションを作成しています。 System.Uri
を使用して、2つのURLを結合しようとしています。ベースURLと、必要なWebアプリケーションの特定のサービス(または多く)に対する相対パス。私はwebappBackendURL
という名前のクラスメンバを1つの場所に定義したいと思っており、すべての呼び出しはそこからビルドされています(webappBackendURL
は私の例のように近く定義されていません)。URLとクエリ文字列部分をどのように組み合わせるか?
System.Uri webappBackendURL = new System.Uri("http://example.com/");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import
ただし、webappBackendURL
にクエリ文字列が含まれている場合は、この機能は維持されません。
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import <-- (query string lost)
URLを結合する方法はありますか? .NETライブラリは広範囲なので、私はこれを処理する組み込みの方法を見落としたかもしれないと思っています。理想的には、私はこのようなURLを組み合わせることができるようにしたいと思います:
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import?method=overwrite&runhooks=true");
// Result: http://example.com/rpc/import?authtoken=0x0x0&method=overwrite&runhooks=true
私は単純なパスから 'Uri'を構築しようとしたときに' UriFormatException'を打ったので、 'MergerUri'を確実に使うことはできません。あなたの最初の提案をメソッドにラップしようとするかもしれません。 – jimp
申し訳ありませんが、私はまずそれをテストしませんでした。更新されたものは動作しますが、あなたが決めたものに似ています。 – jfin3204