C# 为什么我能';t使用HttpWebRequest.Credentials访问用户登录后的网页源
我正在尝试制作windows phone silverlight应用程序来读取网页源代码。确实如此,但只适用于不需要身份验证的页面。我是编程新手,我在MVA上查看了WP8 JumpStart,他们的示例运行良好,直到我尝试访问具有SSL的特定页面。在过去的两天里,我尝试了很多东西,但都没有效果。这是我最近一次应该完成这项工作的职能:C# 为什么我能';t使用HttpWebRequest.Credentials访问用户登录后的网页源,c#,.net,windows-phone-8,httpwebrequest,C#,.net,Windows Phone 8,Httpwebrequest,我正在尝试制作windows phone silverlight应用程序来读取网页源代码。确实如此,但只适用于不需要身份验证的页面。我是编程新手,我在MVA上查看了WP8 JumpStart,他们的示例运行良好,直到我尝试访问具有SSL的特定页面。在过去的两天里,我尝试了很多东西,但都没有效果。这是我最近一次应该完成这项工作的职能: private async void ReadPage() { CookieContainer container = new Cookie
private async void ReadPage()
{
CookieContainer container = new CookieContainer();
var request = HttpWebRequest.Create("url") as HttpWebRequest;
byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes("usrname" + ":" + "pass");
string authInfo = Convert.ToBase64String(bytes);
request.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + authInfo;
request.CookieContainer = container;
request.Accept = "application/json;odata=verbose";
var factory = new TaskFactory();
var task = factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
try
{
var response = await task;
Stream responseStream = response.GetResponseStream();
string data;
using (var reader = new StreamReader(responseStream))
{
data = reader.ReadToEnd();
}
txtContent.Text = data;
}
catch (Exception e)
{
var we = e.InnerException as WebException;
if (we != null)
{
var resp = we.Response as HttpWebResponse;
var code = resp.StatusCode;
MessageBox.Show("RespCallback Exception raised! Message: " + we.Message +
" HTTP Status: " + we.Status);
}
else
throw e;
}
}
private async void ReadPage()
{
CookieContainer容器=新CookieContainer();
var request=HttpWebRequest.Create(“url”)作为HttpWebRequest;
byte[]bytes=System.Text.UTF8Encoding.UTF8.GetBytes(“usrname”+”:“+”pass”);
string authInfo=Convert.ToBase64String(字节);
request.Headers[System.Net.HttpRequestHeader.Authorization]=“Basic”+authInfo;
request.CookieContainer=容器;
request.Accept=“application/json;odata=verbose”;
var factory=new TaskFactory();
var task=factory.fromsync(request.BeginGetResponse,request.EndGetResponse,null);
尝试
{
var响应=等待任务;
Stream responseStream=response.GetResponseStream();
字符串数据;
使用(变量读取器=新的流读取器(responseStream))
{
data=reader.ReadToEnd();
}
txtContent.Text=数据;
}
捕获(例外e)
{
var we=e.InnerException作为WebException;
如果(we!=null)
{
var resp=作为HttpWebResponse的we.Response;
var代码=相应的状态代码;
MessageBox.Show(“RespCallback异常引发!消息:+we.Message+
“HTTP状态:”+we.Status);
}
其他的
投掷e;
}
}
每次我调用它时,它都会将我带到应该已经通过身份验证的登录站点。至少我这么认为。。。我看了一些解决方案,但对我没有任何帮助(或者我忽略了一些东西)。有人有主意吗?
提前感谢有很多类型的身份验证,因此可能是您没有使用正确的身份验证类型。这个网站是公共的吗?如果是这样的话,把它贴在这里。我在gmail上试过了。这两个都不行。Mudri是里耶卡大学Moodle的电子学习中心,如果我是正确的,它使用的是授权模型。这对我来说很重要,第二个工作…然后你设置的用户名和密码不正确(你设置的基本身份)。找出您需要的确切身份验证类型,然后您可以应用该类型的身份验证。除非你知道。没有人能够帮助你。我发现该网站正在使用HTTPS/SAML协议。我在网上寻找解决方案,但我不太了解它们,我不确定它们是否能在WP应用程序中工作@杰夫,你有什么建议吗?至少有一些好的源代码可以让我了解这个主题…我没有玩过SAML,但这有一些客户端代码,您可能会发现它们很有用: