GetLoginCookies(); //先用GET方式去得登录cookie,保存在m_LoginCookie
AfxMessageBox(m_LoginCookie); //这步做个获得cookie的实验
CString strPostRequestLine = _T("/checkGameLogin.xhtml;"); //构造请求头字符串
strPostRequestLine += m_LoginCookie; //拼接m_LoginCookie,因为下一步的POST请求头中要求有这个cookie
AfxMessageBox(strPostRequestLine);  //再看看拼接后的字符串。
......CHttpFile* pFile = mHttpConnect->OpenRequest(CHttpConnection::HTTP_VERB_POST,strPostRequestLine);
......
程序执行后,用抓包工具看到(Request-Line):POST /checkGameLogin.xhtml;%20JSESSIONID=25E7800EB2E6BE939E969CB249B64448.tomcat1 HTTP/1.1
为什么我发的数据里多了%20这几个字符呢?而在AfxMessageBox(strPostRequestLine);  这步中显示的是正确。Cookiecstring

解决方案 »

  1.   

    CString strStatus(_T("")); 
    if(pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strStatus))
    {
    int begin = strStatus.Find(_T("Set-Cookie:"),0) + CString("Set-Cookie:").GetLength();
    int end = strStatus.Find(_T(";"),begin+1);
    m_LoginCookie = strStatus.Mid(begin,end-begin);
    }会不会是在这里截取cookie字符串时有问题呢?
      

  2.   

    问题已经解决。不过要感谢你的回答,确实是我在截取cookie字符串时多出了一个空格。int begin = strStatus.Find(_T("Set-Cookie:"),0) + CString("Set-Cookie:").GetLength();这句后面+1就没空格。