本帖最后由 showbo 于 2014-07-02 09:50:54 编辑

解决方案 »

  1.   

    返回的strHtml 为 <script type='text/javascript'>top.location.href='http://sdjs3.com:80/login.jsp';</script>
    定向到login.jsp,是不是get的时候需要身份验证,但是我已经登录过了
      

  2.   

    http://support.microsoft.com/default.aspx?scid=kb;[ln];q313116
    貌似是这个问题,不过还没有来得及验证
      

  3.   

    要用cookicontainer将你登陆后获取到的session对应的客户端cookie值一起发送过去才行直接发送一个request是不会在登陆状态的
    参考
    C#使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
      

  4.   

    自己去看了解asp.net的cookiecontainer就好了。。要有个模拟登陆的过程当然你也可以用浏览器登录后,用开发工具找到记录session的cookieid值,直接构造cookiecontainer发送这个cookieid和值,省略webrequest的登陆过程
      

  5.   

    cookie是在登录的时候构造的,我用post方式登录成功了,GetResponseStream的内容也是登录后网页数据,但是前面怎么还是在登录窗口?
      

  6.   

    本帖最后由 showbo 于 2014-07-03 09:05:48 编辑
      

  7.   


    我用post方式登录成功了,GetResponseStream的内容也是登录后网页数据,但是怎么还是在登录页面?我初次接触这个,希望大师不吝赐教。 
      

  8.   

    去看CookieContainer相关资料,现在你的问题就是其他的请求没有将登陆成功后的session对应的cookie一起发送,导致相当于启用了一个新的会话,而不是登陆后的会话随便去看会话(session)和cookie的关系
      

  9.   


    在大师的指导下,程序终于通了,,真不容易。
    但是有个新的问题,
    我在自动登录的时候,用的是post的方式,Response.ResponseUri返回的也是登录后的网址,但是我的程序页面还是停在登录界面上。求指导。谢谢!
      

  10.   

    程序?什么程序。。你用winform+webbrowser组件?
      

  11.   


    是的,登录之后我把cookies和sessionId都保存好了,第一次post是成功的,第二次就提示没有登录,跳转到登录界面了
      

  12.   

    不太明白到底楼主要搞什么东东了。如果用winform+webbrowser直接加载它登陆页面就好了吧,然后都在webbrowser操作就和浏览器的操作方式一样了,不需要HttpWebRequest对象了。如果就只用HttpWebRequest就需要使用cookiecontainer附带登陆后的会话id对应的cookie
      

  13.   

    我是在winform中嵌入webbrowser,用来自动获取一个论坛的有用信息。从登录到获取数据,想全部做成自动的。网页中的每个网址的请求格式我都用HttpAnalyzerStdV5获取到了。如果是自动处理,webbrowser还是需要HttpWebRequest吧
      

  14.   

    webbrowser只是用来展示页面用的,软件界面中除了webbrowser之外,还有参数设置的功能。
      

  15.   

    软件操作的时候,不会与webbrowser进行交互,软件的操作会反映在webbrowser中,比如,刚开始的时候,webbrowser中是登录页面,我自动登录之后,webbrowser中的页面要能够跳转到登录后的页面中去