Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
当通过web请求url时,从需要用户名和密码的url自动获取响应的C#代码_C# - Fatal编程技术网

当通过web请求url时,从需要用户名和密码的url自动获取响应的C#代码

当通过web请求url时,从需要用户名和密码的url自动获取响应的C#代码,c#,C#,当我通过浏览器地址栏请求页面(比如:)时,它会提示我一条消息[比如:需要身份验证:服务器需要用户名和密码…]。当我提供用户名和密码时,它会显示对浏览器的响应。否则会显示:用户未经授权 我想用C代码自动化这个过程,这样我就可以在代码中得到响应。因为它提示用户名和密码,所以我无法通过HttpWebRequest/response获得响应 我已尝试使用以下代码块: HttpWebRequest webRequest = WebRequest.Create(myUrl) as HttpWe

当我通过浏览器地址栏请求页面(比如:)时,它会提示我一条消息[比如:需要身份验证:服务器需要用户名和密码…]。当我提供用户名和密码时,它会显示对浏览器的响应。否则会显示:用户未经授权

我想用C代码自动化这个过程,这样我就可以在代码中得到响应。因为它提示用户名和密码,所以我无法通过HttpWebRequest/response获得响应

我已尝试使用以下代码块:

       HttpWebRequest webRequest = WebRequest.Create(myUrl) as HttpWebRequest;

       webRequest.Proxy = WebRequest.DefaultWebProxy;

        webRequest.Credentials = new NetworkCredential(userName, password);
        webRequest.Proxy.Credentials = new NetworkCredential(userName, password);

        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        System.IO.Stream stream = response.GetResponseStream();

        System.IO.StreamReader sReader = new System.IO.StreamReader(stream);
        Console.WriteLine(sReader.ReadToEnd());

请帮帮我

您必须检查响应标题

欲了解更多信息,请点击此处


试试这个。

我终于找到了解决办法。我请求的站点需要基本的IIS身份验证。我通过以下方式解决了这个问题:

        WebRequest webRequest = WebRequest.Create(finalUrl);
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
        CredentialCache credentialCache = new CredentialCache();
        credentialCache.Add(new System.Uri(finalUrl), "Basic", new NetworkCredential(userName, password));

        webRequest.Credentials = credentialCache;
        webRequest.PreAuthenticate = true;

        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

        System.IO.Stream stream = response.GetResponseStream();

        System.IO.StreamReader sReader = new System.IO.StreamReader(stream);
        pageSource = sReader.ReadToEnd();

它返回以下标题:no cache X-something-cache:hit X-UA-Compatible:IE=EmulateIE7传输编码:分块缓存控制:no cache,no store,私有内容类型:text/html;charset=UTF-8日期:2012年7月6日星期五08:41:42 GMT过期:现在最后修改时间:2012年6月20日星期三14:15:53 GMT服务器:nginx/0.8.53在“WebResponse resp=req.GetResponse();”行出现异常。错误:远程服务器返回错误:(405)方法不允许尝试使用
HTTPWebResponse
而不是“WebResponse”是您尝试访问的页面是http远程服务器或本地主机上的页面。我尝试使用HTTPWebResponse,但结果相同。该页面位于远程服务器上。请尝试检查您传递的凭据`user={0}&password={1}&switch=Log+In'这一行对于您的网站可能也不完全相同。
        WebRequest webRequest = WebRequest.Create(finalUrl);
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
        CredentialCache credentialCache = new CredentialCache();
        credentialCache.Add(new System.Uri(finalUrl), "Basic", new NetworkCredential(userName, password));

        webRequest.Credentials = credentialCache;
        webRequest.PreAuthenticate = true;

        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

        System.IO.Stream stream = response.GetResponseStream();

        System.IO.StreamReader sReader = new System.IO.StreamReader(stream);
        pageSource = sReader.ReadToEnd();