none
使用CInternetSession进行authentication的问题 RRS feed

  • 问题

  • 使用CInternetSession进行authentication的问题
    --
    我定义了一个函数用于访问需要digest authentication的http页面,用户名和密码作为参数传入。函数大致结构如下:
    当调用pFile->SendRequest时,web服务器会返回401代码,此时pFile->SendRequest内部会用user和pwd计算出authorization header,加入到

    http header中,并再次发送请求,这时返回200,页面打开。
    现在的问题是,当第一次用user1和pwd1调用函数GetHttpPage()之后,如果换成其他的例如user2和pwd2再次调用,pFile->SendRequest()仍然

    会用之前用user1和pwd1计算出的authorization header进行请求,而不会用user2和pwd2。这个函数应该是没有全局变量啊,似乎这个

    authorization header被缓存起来了,不知道这个信息被保存到哪里了?怎么能设置参数让pFile->SendRequest每次调用时都重新计算

    authorization header?
    希望有人能帮忙解答一下,非常感谢!

    GetHttpPage(Cstring ip, Cstring port, CString user, CString pwd)
    {
    CInternetSession iSession("default");
    CHttpConnection* pServer = NULL;
    CHttpFile* pFile = NULL;

    pServer = iSession.GetHttpConnection(ip, port, user, pwd);
    pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, "mypage.html");// Set the url
    pFile->SendRequest();// Make the request
    ...
    ...
    delete pFile;
    delete pServer;
    iSession.Close();
    }

    2008年7月25日 15:58

答案