2013-02-04 12 views
9

私の必要条件は、Http Urlsを解析し、それに応じて関数を呼び出すことです。私の現在の実装では、最適化された方法ではないと思うネストされたif-elseステートメントを使用しています。あなたは他の効率的なApprochを提案できますか?C#でHTTP URLを解析するにはどうすればよいですか?

URLはこれらのようなものです:

  • server/func1
  • server/func1/SubFunc1
  • server/func1/SubFunc2
  • server/func2/SubFunc1
  • server/func2/SubFunc2
+0

関数名だけが必要な場合は、URLを分割して最後のトークンのみを取得するのはどうですか? – SamGamgee

+1

"解析"の意味を明確にすることはできますか?私は抽出したいいくつかの特定のデータがあると仮定します。どんな目的のために、どんな部分ですか? –

+0

私にはたくさんの種類のURLがあります。それは属性、有用な価値のあるurisも含んでいます。 – vijay053

答えて

36

私はあなたがSystem.Uriクラスから多くの使用を得ることができると思います。 URIを入力すると、いくつかの取り決めで作品を引き出すことができます。

いくつかの例:

Uri myUri = new Uri("http://server:8080/func2/SubFunc2?query=somevalue"); 

// Get host part (host name or address and port). Returns "server:8080". 
string hostpart = myUri.Authority; 

// Get path and query string parts. Returns "/func2/SubFunc2?query=somevalue". 
string pathpart = myUri.PathAndQuery; 

// Get path components. Trailing separators. Returns { "/", "func2/", "sunFunc2" }. 
string[] pathsegments = myUri.Segments; 

// Get query string. Returns "?query=somevalue". 
string querystring = myUri.Query; 
0

私は、URLの興味深い機能で取得するための文字列を分割してSuncat2000の答えにスプリットを組み合わせました。ナビゲーション引数e.Parameterとして別のページからなど:私は、HTTPSを含む完全なURIを渡しています

Uri playlistUri = (Uri)e.Parameter; 
string youtubePlaylistUnParsed = playlistUri.Query; 
char delimiterChar = '='; 
string[] sections = youtubePlaylistUnParsed.Split(delimiterChar); 
string YoutubePlaylist = sections[1]; 

これは私のGoogle APIの中に使用するためにPLs__などの形でプレイリストを取得します。

2

これは、後半の答えのビットとして来るかもしれないが、私は自分自身は最近、いくつかのURLを解析しようとしていて、私はhere見られるようにUriSystem.Web.HttpUtilityの組み合わせを使用して一緒に行ってきました、私のURLはhttp://one-domain.com/some/segments/{param1}?param2=x....ようなので、これは私がやったことありました:両方のケースであなたがstring Sでの作業、およびセグメントでの作業時に、特別に疲れたことができるだろうと

var uri = new Uri(myUrl); 
string param1 = uri.Segments.Last(); 

var parameters = HttpUtility.ParseQueryString(uri.Query); 
string param2 = parameters["param2"]; 

ノート。

関連する問題