Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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# 有没有办法传递登录信息来阅读C语言的网站#_C#_Authentication_Webrequest - Fatal编程技术网

C# 有没有办法传递登录信息来阅读C语言的网站#

C# 有没有办法传递登录信息来阅读C语言的网站#,c#,authentication,webrequest,C#,Authentication,Webrequest,我想用C#阅读一个网站,使用以下内容: WebRequest myWebRequest = WebRequest.Create("http://www.myurl.com/test.aspx"); WebResponse myWebResponse = myWebRequest.GetResponse(); Stream ReceiveStream = myWebResponse.GetResponseStream(); Encod

我想用C#阅读一个网站,使用以下内容:

        WebRequest myWebRequest = WebRequest.Create("http://www.myurl.com/test.aspx");
        WebResponse myWebResponse = myWebRequest.GetResponse();
        Stream ReceiveStream = myWebResponse.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        StreamReader readStream = new StreamReader(ReceiveStream, encode);
        string strResponse = readStream.ReadToEnd();
问题是他们现在已经在页面上进行了身份验证,所以当我进入网站时,我会得到登录提示,并且必须输入用户名和登录名

我的代码现在返回错误:

The remote server returned an error: (401) Unauthorized.
我尝试添加以下内容:

myWebRequest.Credentials = new NetworkCredential("[username]", "[pwd]");
这是:

ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; 
但还是有同样的错误:


在上面的WebRequest代码中是否有传递这些凭据的方法?

当然可以传递登录信息(当身份验证“包括基本身份验证(通常是应用程序驱动的操作系统帐户提示)或NTLM(集成文件安全)”时):

这里有更深入的见解:


如果网站使用HTTP基本身份验证(浏览器生成的登录对话框),则可以将
HttpWebRequest
Credentials
属性设置为
NetworkCredential
实例

如果网站使用表单身份验证(基于HTML的登录表单;这更常见),您需要单独请求登录网站,并在请求之间共享
CookieContainer
,以保留登录。

您可以使用查看登录请求的外观。

请参阅更新的问题。似乎不起作用。你能解释一下我将如何使用fiddler来确定期望的内容吗???@ooo:在fiddler运行的情况下登录网站,查看请求。@ooo-你读过这篇文章吗?也许还有更多相关信息。我想这不是“https”,如果是:接受所有证书。绝对不是https-我更新了问题。我添加了acceptsall策略,但似乎没有帮助。@ooo-也许中间有一个代理。在这篇文章中,我提到他们谈论这一点。要知道这一点,在fiddler>inspectors>headers>auth中,如果中间没有任何内容,则会显示“不存在代理身份验证头。WWW Authenticate头存在:Basic realm=“THEURLYOUWANT.es”
myWebRequest.Credentials = new NetworkCredential("username","password");