2012-04-16 65 views
1

我们下载的HTML页面很少,并且链接有问题(相对路径),我们有每个页面从下载的原始URL。Uri.TryCreate的输入参数,出了什么问题?

Foreach (anchorElement in page) - 
    Uri.TryCreate(originalPageURI, hrefRelativeURI, hrefAbsoluteURI) 

这适用于大多数的除下列情况的案件 - -

originalPageURI = http://somewebsite.com/post.jsp?item=22 

hrefRelativeURI = ?item=97 

什么将是Uri.TryCreate()输入参数

我们正在使用转换成绝对链接的所有相关链接对于以上情况,TryCreate()失败?

+1

有3种不同的Uri.TryCreate()重载。 ?item = 97不是路径的一部分,但它是一个查询字符串的参数。它不能用作相对路径! – JotaBe 2012-04-16 15:51:16

+0

@JotaBe所以我们只是在原始URL中使用新的查询字符串参数,不需要使用Uri.TryCreate()这样的链接? – DSharma 2012-04-16 15:54:58

+1

你必须让你的问题更清楚吗?你为什么需要创建一个Uri?你在哪里使用它。请解释。 – JotaBe 2012-04-16 15:56:32

回答

2

你不能用Uri解决你的问题,因为?item=97不是相对路径,而是一个查询字符串。

所以,你需要做的是构建你的新网址手工加入部分。

你应该使用:

  • originalFolderPath,你原来的URL到最后一个'/'的部分。你可以加入这个“真正的”相对路径来获得绝对的uri。 (即不以?开头的那些)

  • originalFilePath,作为原始网址的一部分,最大为'?'。你可以加入这个部分的“错误”相对路径。假是代表查询字符串参数的那些(即以?开头的那些)。