none
为啥HTTP访问我只看到一次请求? RRS feed

  • 问题

  • 我要通过HTTP访问服务器并且获得返回的内容。。但是我看服务器的日志信息只能访问一次,第二次在访问虽然代码是返回成功的,但是服务器并没有请求的日志。这是为何?只有重新打开程序才有请求,否则无论点几次请求按钮都服务器都只收到一次。。难道是缓存原因吗?怎么解决呢?

    HRESULT CMFCApplication1Dlg::HTTPGetfile(const TCHAR* sUrl,CString& rContent)
    {
    	HRESULT rReturn = S_FALSE;
    
    	CInternetSession* pSession = new CInternetSession();
    	CInternetFile* pUrlFile = NULL;
    	rContent = _T("");
    	try
    	{
    		if ((pUrlFile = (CInternetFile*)pSession->OpenURL(sUrl)) != NULL)
    		{
    			CString strLine;
    			for (int i = 0; pUrlFile->ReadString(strLine); i++)
    			{
    				rContent += strLine;
    				strLine;
    			}
    			pUrlFile->Close();
    			pSession->Close();
    			delete pSession;
    			pSession = NULL;
    			rReturn = S_OK;
    		}
    	}
    	catch (CInternetException* e)
    	{
    		pUrlFile = NULL;
    		e->Delete();
    	}
    	delete pSession;
    	return rReturn;
    }
    
    void CMFCApplication1Dlg::OnBnClickedButton1()
    {
    	// TODO:  在此添加控件通知处理程序代码
    	LPCTSTR lpszUrl = _T("http://127.0.0.1:91/DEPLOY?Stream=autotest&gwurl=125.70.9.134:30015&moniker=192.168.127.151%3a80%7e0000000000200000000000001140012%3a0000000000200000000000001020013%3a192.168.127.14%3a510101&param=&device=sky");
    	CString m_strString;
    	if (S_OK == HTTPGetfile(lpszUrl,m_strString))
    	{
    		m_EidtString.SetWindowText(m_strString);
    	}
    }
    


    …|▌'寔堅蔃の/「≯還寔╪.逞蔃﹖

    2015年1月20日 8:35

答案

  • 我的建议是用抓包工具抓个包看一下,第二次请求是否送到服务器了。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 dowflyon 2015年1月21日 2:22
    2015年1月20日 12:47
    版主