2013-02-04 13 views
9

Il mio requisito è di analizzare Url Http e chiamare le funzioni di conseguenza. Nella mia attuale implementazione, sto usando nested if-else statement che penso non sia un modo ottimizzato. Puoi suggerire qualche altro approccio efficace?Come posso analizzare gli URL HTTP in C#?

URL sono come questi:

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

Che dire di dividere l'URL e ottenere solo l'ultimo token, se hai solo bisogno dei nomi delle funzioni? – SamGamgee

+1

Puoi essere più chiaro su cosa intendi con "parse"? Presumo che ci siano alcuni dati specifici che vuoi estrarre; ma quale parte e per quale scopo? –

+0

Ci sono molti tipi di URL che ottengo. Contiene attributi, valore utile anche nell'uris. – vijay053

risposta

36

Penso che tu possa ottenere un sacco di utilizzo dalla classe System.Uri. Dagli un URI e puoi estrarre pezzi in un certo numero di accordi.

Alcuni esempi:

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

ho unito la scissione risposta di Suncat2000 con splitting stringa di arrivare a caratteristiche interessanti dell'URL. Sto passando in un URI completo, compreso https: ecc da un'altra pagina come e.Parameter argomento di navigazione:

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

Questo mi viene la playlist in PLs__ ecc modulo per l'impiego nelle API di Google.

2

Questo potrebbe venire come un po 'una risposta in ritardo, ma mi sono trovato di recente cercando di analizzare alcuni URL e sono andato lungo utilizzando una combinazione di Uri e System.Web.HttpUtility come visto here, i miei URL erano come http://one-domain.com/some/segments/{param1}?param2=x.... quindi questo è quello che ho fatto :

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

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

nota che in entrambi i casi ti verrà a lavorare con string s, e di essere particolarmente stanca quando si lavora con i segmenti.

Problemi correlati