【问题标题】:Port numbers and URL's端口号和 URL
【发布时间】:2011-01-14 00:12:02
【问题描述】:

我们的应用程序向用户请求 URL,但该 URL 可能包含 .com 或 .com.uk(任何国家/地区名称)地址结尾之后的信息。

例如,用户可能会向我们提供地址;
www.example.com/sample/userbin?form=sl&t=

当然,上面的 URL 是虚构的,不会起作用,但它说明了我的观点。

我们的应用程序还存储连接数据,以使应用程序能够通过代理服务器等访问互联网。它还允许用户指定端口号,但我们注意到 WebClient 不提供端口号的成员。

唯一的另一种方法是将端口号附加到 URL,但是当我们不知道用户提供的 URL 时,我们怎么能这样做呢?

【问题讨论】:

    标签: c# webclient port


    【解决方案1】:

    你为什么不知道域名?如果用户输入了一个有效的 URL,它将匹配如下模式:

    //<domain>/path/file/whatever
    

    <domain>/path/file/whatever
    

    添加端口:

    <domain>:<port>/path/file/whatever
    

    【讨论】:

    • 域可以是任何东西......所以看起来我们需要做的就是从 URL 中删除域并附加端口。
    • 正确的只是解析以 *// 开头的域(即:http://、https://、ftp:// 等)和下一个 /。
    【解决方案2】:

    我不知道这是否会对您有所帮助,但 URL 中的端口直接位于主机名之后,前面有一个冒号。

    示例:(端口 8080 上的 www.example.com)

    http://www.example.com:8080/
    

    【讨论】:

      【解决方案3】:

      你可以用 / 或 ?例如:

      http://google.com|?search=cats
      http://google.com|/mail
      

      在哪里 |是分裂。 URL 后面唯一可能出现的字符是 / 和 ?。因此,您可以执行以下操作:

      http://google.com|/mail 
      

      拆分,然后在域之后附加端口,然后在末尾附加额外的,如下所示:

      http://google.com:8080/mail
      

      我想这就是你的意思。

      【讨论】:

      • 所以“/”或“?”是唯一会出现在域之后的字符吗?
      • 非常肯定,除非他们已经提供了一个端口(您可以使用 :) 检查。我从未见过其他任何东西,但您可能需要查看 rfc 规范。
      猜你喜欢
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 2011-07-04
      • 1970-01-01
      • 2017-03-03
      • 2016-11-11
      相关资源
      最近更新 更多