Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中解析HTTP URL?_C#_Parsing_Url - Fatal编程技术网

如何在C#中解析HTTP URL?

如何在C#中解析HTTP URL?,c#,parsing,url,C#,Parsing,Url,我的要求是解析Http URL并相应地调用函数。在我当前的实现中,我使用嵌套的if-else语句,我认为这不是一种优化的方式。你能推荐一些其他有效的方法吗 URL如下所示: server/func1 server/func1/SubFunc1 server/func1/SubFunc2 server/func2/SubFunc1 server/func2/SubFunc2 我想你可以从课堂上得到很多好处。向它提供一个URI,您可以按照多种方式提取片段 一些例子: Uri myUri = new

我的要求是解析Http URL并相应地调用函数。在我当前的实现中,我使用嵌套的if-else语句,我认为这不是一种优化的方式。你能推荐一些其他有效的方法吗

URL如下所示:

  • server/func1
  • server/func1/SubFunc1
  • server/func1/SubFunc2
  • server/func2/SubFunc1
  • server/func2/SubFunc2

    • 我想你可以从课堂上得到很多好处。向它提供一个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;
      

      我将Suncat2000答案中的拆分与字符串拆分相结合,以了解URL的有趣特性。我从另一个页面传入一个完整的Uri,包括https:等,作为导航参数e。参数:

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

      这让我得到了PLs_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuhttp://one-domain.com/some/segments/{param1}?param2=x…我就是这么做的:

      var uri = new Uri(myUrl);
      string param1 = uri.Segments.Last();
      
      var parameters = HttpUtility.ParseQueryString(uri.Query);
      string param2 = parameters["param2"];
      

      请注意,在这两种情况下,您都将使用
      string
      s,并且在使用段时会特别疲劳。

      如果您只需要函数名,那么拆分url并仅获取最后一个标记如何?您能否更清楚地理解“解析”的含义?我假设有一些特定的数据要提取;但是什么部分和目的?我得到的url有很多种。它包含属性,URI中也包含有用的值。是这样的吗?你可以将url拆分为“/”并遍历每个标记。但我必须再次使用嵌套的if-else语句。。。