我修改的别人程序,想自动登录我们的OA系统,把页面html文件下载下来。
登录页面进行身份验证合法后,返回状态302,既要求redirect.我程序中如何处理?我的发送为:
GET /names.nsf?Login&username=myname&password=mypwd&RedirectTo=http://main.xxx.com/wps/myportal/!ut/p/c1/0wcA1NLTeQ!! HTTP/1.1
Host:oa.xxx.com
Accept:*/*
User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Connection:Keep-Alive接收到的消息头:
HTTP/1.1 302 Found
Server: Lotus-Domino
Date: Wed, 24 Jun 2009 07:43:26 GMT
Connection: close
Location: http://main.xxx.com/wps/myportal/!ut/p/c1/0wcA1NLTeQ!!
Set-Cookie: LtpaToken=/aTLlYOaoVKOQBxcb19nGB4rgpSGvluGgO0WbNRqXmhwrwdk3VzqoZwXSXabetXEFkMtNjFkQWnYEI95yPWFBVdWc1m/s2xp9PyR7WrcrnU03MuZDkS/7+/VrHjsk4cgCvkX9Z1ARGDqhFazwplPyGMiMamGPUcM152BJoA3yOa8rV56NhXhnBZRggBRKPJqesrHzTsWsl1XL5DsPHduk8t8TFqqnt9qlD+vNDjbL1qoljie3PKh1fRZG9KCuh9/ZJB0GNBdgCCm8h5Q9uyetdLil0UHQgCH2okpabgKAN7fGt23S9N8vA==; domain=.xxx.com; path=/--------------------------------------------------------------------------------
服务器是Lotus-Domino。
连接普通网站静态页面没有问题,如sohu等,至少可以得到html文件。但访问我公司oa不行。如果我在浏览器的地址栏里输上:
http://oa.xxx.com/names.nsf?Login&username=myname&password=mypwd&RedirectTo=http://main.qlzq.com/wps/myportal/!ut/p/c1/0wcA1NLTeQ!!
则完全是可以正常访问的。但是我将这个字符串用我的程序发送过去后就不行了,不知道返回状态302后该怎么办?哪位指点一下?多谢!

解决方案 »

  1.   

    收到302然后去打开Location字段的地址,被重定向了.
    关于HTTP响应码的意思,可以查看HTTP协议规范.
      

  2.   


    不行,我就把Location字段当做新的地址去打开,结果被从定向回了登陆页面.
      

  3.   

    什么不使用CHttpFile?重新打开连接的时候session id不能变变了。
      

  4.   


    因为打开这个地址的时候要校验Cookie信息,因为Cookie信息不对或者你打开时没带上,所以被重定向回了登陆页面
    第二次打开Location地址的时候,要把第一次打开地址返回的Cookie带上,就是Set-Cookie字段的东西.
      

  5.   


    我觉得很可能是这个问题。可是怎么把第一次返回的cookie带上啊?谢谢!
      

  6.   

    既然第一次返回的信息你能获取到,那么就把Cookie的字符串保存下来
    第二次打开地址的时候在发送头里加个"Cookie:"的字段把信息补全就好了.
      

  7.   


    帅哥,你太帅了,成功了!就把cookie再发回去就行。不过还有点小问题,我自己搞定去。
      

  8.   

    MARK  !我这个问题还没解决!