1
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。之后,我提交了回复请求。它也给出了上面的错误。

4

0 回答 0