item = 535;
String URI = "http://localhost:3033/WebFormDesigner.aspx?fm_id=" + item.ToString();
//String URI = "http://www.google.com";
WebClient wc = new WebClient();
Stream s = wc.OpenRead(URI);
XPathDocument doc = new XPathDocument(s);
它不适用于:
XPathDocument doc = new XPathDocument(URI);
在上述方法中,使用 google URI 有效,但它似乎根本不喜欢 localhost 的 URI。我确认 URI 在放入浏览器时有效。不太清楚它发生了什么。
错误发生在 Stream 声明上。
The remote server returned an error: (401) Unauthorized.
这是我另一篇文章的扩展:如何在 asp.net 中获取网页的标记,类似于 php 的 get_file_contents
编辑:这里正在查看的问题是没有查看页面的权限。被访问的页面是安全页面。我想要做的是给我的请求权限,因为页面在同一个项目中,但是使用假设它是外部源的 WebRequest。
我试图通过几个不同的尝试来完成。两者都涉及cookies。
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URI);
request.KeepAlive = true;
request.Credentials = CredentialCache.DefaultCredentials;
request.CookieContainer = new CookieContainer();
HttpCookieCollection cookieJar = Request.Cookies;
//foreach (string cookieString in Request.Cookies)
for(int i = 0; i < cookieJar.Count; i++)
{
System.Web.HttpCookie cookie = cookieJar.Get(i);
Cookie oC = new Cookie();
oC.Domain = Request.Url.Host;
oC.Expires = cookie.Expires;
oC.Name = cookie.Name;
oC.Path = cookie.Path;
oC.Secure = cookie.Secure;
oC.Value = cookie.Value;
request.CookieContainer.Add(oC);
}
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
Stream s = response.GetResponseStream();
这做了一些非常简单的事情,但我想我仍然做错了。我获取当前页面的 cookie,并将它们传递给目标页面的 cookiecollection。之后,我提交了回复请求。它也给出了上面的错误。