C# 如何编写包含Windows Live ID的HttpRequest?

C# 如何编写包含Windows Live ID的HttpRequest?,c#,.net,C#,.net,我正在尝试编写一个小工具,让我能够发送http请求和响应,因为我了解了更多关于.NET framework中网络功能的信息 但是,在处理需要Windows Live ID身份验证的页面时,我不知道如何编写包含身份验证信息的请求,以便检索页面的HTML。我只是以HTML结束,其中包含Windows Live ID的用户名和密码条目 有人能给我举个例子,说明如何用C语言编写一个HttpRequest,让我通过使用Windows Live ID的站点进行身份验证吗 谢谢 -Craig我认为您首先需要加

我正在尝试编写一个小工具,让我能够发送http请求和响应,因为我了解了更多关于.NET framework中网络功能的信息

但是,在处理需要Windows Live ID身份验证的页面时,我不知道如何编写包含身份验证信息的请求,以便检索页面的HTML。我只是以HTML结束,其中包含Windows Live ID的用户名和密码条目

有人能给我举个例子,说明如何用C语言编写一个
HttpRequest
,让我通过使用Windows Live ID的站点进行身份验证吗

谢谢


-Craig

我认为您首先需要加载登录页面,然后模拟表单提交(通过POST或GET,无论它在做什么),然后存储返回的cookie值,以便在每次请求时发送它们

这样想吧——当你试图拉取你想要的页面时,它来自另一个客户端(为了简单起见,请考虑浏览器)。您的程序不是Internet Explorer、Firefox或Chrome,而是它自己的新浏览器。如果您在Internet Explorer中登录Windows LIVE,然后在Firefox中转到同一页面,它会使您再次登录,对吗

好的,网站知道你是谁的唯一方法是通过它放在你机器上的cookies,这些cookies是特定于浏览器的


因此,由于您本质上是在制作一个新浏览器,因此您必须存储创建的cookie(该cookie将您与有效的登录会话链接),并在每个请求中发送这些cookie。

我认为您首先需要加载登录页面,然后模拟表单提交(通过POST或get,无论它在做什么),然后存储返回的cookie值,以便在每次请求时发送它们

这样想吧——当你试图拉取你想要的页面时,它来自另一个客户端(为了简单起见,请考虑浏览器)。您的程序不是Internet Explorer、Firefox或Chrome,而是它自己的新浏览器。如果您在Internet Explorer中登录Windows LIVE,然后在Firefox中转到同一页面,它会使您再次登录,对吗

好的,网站知道你是谁的唯一方法是通过它放在你机器上的cookies,这些cookies是特定于浏览器的


因此,由于您本质上是在创建一个新浏览器,因此您必须存储创建的cookie(该cookie将您与有效的登录会话链接),并在每个请求中发送这些cookie。

@matt dawdy:当我尝试发出get请求时,我不断收到一个回复,即Windows Live ID需要JavaScript才能登录。我如何让它相信JavaScript是存在的?另外,假设cookie在响应中返回,我如何在代码中访问它,以便在下一个GET请求中包含它?您是否使用过Fiddler?去拿吧。安装它,然后启动它。然后,使用IE或Firefox或其他工具登录Windows Live。然后看看小提琴手。您应该看到您的登录请求,并且您将能够调查到底发送了什么,这将真正帮助您了解发生了什么。你读过《罗恩·哈列夫的回答》了吗?看看他链接到的问题和他答案中的另一个链接。很好。对不起,我刚看到你对罗恩的帖子发表了评论。过时了?好吧,那就回到小提琴手那里去吧。您将能够准确地看到发送了什么请求,何时发送,以及它们是POST还是GET。这将帮助您了解Windows Live是如何工作的。@matt dawdy:当我试图发出GET请求时,我总是得到一个回复,即Windows Live ID需要JavaScript才能登录。我如何让它相信JavaScript是存在的?另外,假设cookie在响应中返回,我如何在代码中访问它,以便在下一个GET请求中包含它?您是否使用过Fiddler?去拿吧。安装它,然后启动它。然后,使用IE或Firefox或其他工具登录Windows Live。然后看看小提琴手。您应该看到您的登录请求,并且您将能够调查到底发送了什么,这将真正帮助您了解发生了什么。你读过《罗恩·哈列夫的回答》了吗?看看他链接到的问题和他答案中的另一个链接。很好。对不起,我刚看到你对罗恩的帖子发表了评论。过时了?好吧,那就回到小提琴手那里去吧。您将能够准确地看到发送了什么请求,何时发送,以及它们是POST还是GET。这将帮助您了解Windows Live是如何工作的。也许在Windows窗体应用程序中使用webbrowser组件比使用HttpRequest模拟它更容易。在https或带有表单帖子的网站上使用HttpRequest确实很难工作。@Barfieldmv:我就是这样做的,使用WPF浏览器控件登录,然后导航到页面。不幸的是,这种情况下没有简单的API。在windows窗体应用程序中使用webbrowser组件可能比使用HttpRequest模拟它更容易。在https或带有表单帖子的网站上使用HttpRequest确实很难工作。@Barfieldmv:我就是这样做的,使用WPF浏览器控件登录,然后导航到页面。不幸的是,这个场景没有一个简单的API。