WebBrowser控件C#

时间:2011-05-11 19:35:50

标签: c#-4.0

您好 我使用webbrowser控件登录此网址https://direct.gov.mb.ca/ppr/jsps/login/login.jsp 输入正确的用户名&密码我将被重定向但是被重定向到非成员页面,(我还没有登录),我使用了fiddler并在浏览器中完成了步骤并成功登录,这是我在程序和常规之间的fidler中看到的唯一差异浏览器,当我输入相同的URL时,在浏览器中,它会在标题中有2个cookie,这是非常奇怪的,不知道它在哪里获得这些cookie,但是我的程序显然在标题中没有cookie,也是在登录后常规浏览器响应中有5个cookie但我的程序只有2个cookie

我还想提一下,我的代码没有任何问题,因为我成功登录到其他https网站和http网站,这个网站有一些独特之处,我如何过来这个问题,已经3天了我无法弄清楚

编辑:代码

HtmlDocument doc = webBrowser1.Document; 
HtmlElementCollection elemsName = doc.All.GetElementsByName("userName"); 
int count = elemsName.Count; 
HtmlElement elmName = elemsName[0]; 
elmName.SetAttribute("value", "XXXXX"); 
HtmlElementCollection elemsPass = doc.All.GetElementsByName("password"); 
HtmlElement elmPass = elemsPass[0]; 
elmPass.SetAttribute("value", "XXXXX"); 
HtmlElementCollection elemsSubmit = doc.All.GetElementsByName("loginAction");
HtmlElement elmSubmit = elemsSubmit[0]; 
elmSubmit.InvokeMember("click"); 

但正如我所说,该代码适用于其他网站,如facebook.com

1 个答案:

答案 0 :(得分:0)

  1. 您是否在使用“常规浏览器”打开页面之前尝试清理Cookie?如果是,饼干的数量是否仍然相同?

  2. webbrowser和常规浏览器中的用户代理是否相同? 如果没有,您可以尝试使用以下方式设置它们:

    [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
    private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer,
    int dwBufferLength, int dwReserved);
    const int URLMON_OPTION_USERAGENT = 0x10000001;
    
    private const string UserAgent = "Your User Agent";
    
    UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, UserAgent, UserAgent.Length, 0);
    
  3. 您是否检查了https://direct.gov.mb.ca/ppr/actions/loginDispatcher的POST正文(TextView)?它们是一样的吗?