这是一段接收微信红包的代码。先向服务器发送红包请求,服务器会返回一个微信的链接,在打开微信链接后,会返回一个二维码图片,扫码就会有红包。
但是MFC的对话框按键接收一次后,再按键接收,发现还是原来的图片,没有收到新的红包,而在游览器中试,二维码会更新。小白,不知道是哪里没清空还是什么原因?
void OnRead()
{
CInternetSession c ;
CHttpFile * p=NULL ;
p=(CHttpFile*)c.OpenURL("http://xxx.xxx.xx.xx/xxxxxxxx/xx") ; //打开一个URL
CString str ;
CString info="";
while(p->ReadString(str)) //读取网页数据
info+=str ;
const int dwBufSize = 1024;
CInternetSession * Session = new CInternetSession;
CHttpFile* pHttpFile = NULL;
CStdioFile pLocalFile;
DWORD dwlen;
try
{
LPBYTE lpBuf = new byte[dwBufSize];
// 把这个szPath置为D://test.jpg就行了
pLocalFile.Open( "D://test.jpg",
CFile::modeCreate |
CFile::modeWrite |
CFile::typeBinary );
pHttpFile =(CHttpFile*)Session->OpenURL(
info,
1,
INTERNET_FLAG_TRANSFER_BINARY |
INTERNET_FLAG_RELOAD |
INTERNET_FLAG_DONT_CACHE,
NULL,
0);
while(dwlen = pHttpFile-> Read(lpBuf, dwBufSize-1 ))
{
pLocalFile.Write(lpBuf,dwlen);
}
pLocalFile.Close();
pHttpFile->Close();
pHttpFile=NULL;
delete[] lpBuf;
}
catch(CInternetException eInt)
{
eInt.Delete();
}
catch(CMemoryException eMem)
{
eMem.Delete();
}
catch(CFileException eFile)
{
eFile.Delete();
}
}
------解决思路----------------------
用了,INTERNET_FLAG_RELOAD
------解决思路----------------------
INTERNET_FLAG_DONT_CACHE, 应该不会有这个问题。
不过,平时我都习惯性地在链接地址上加一下
"?rand=yyyymmddhhmmss"
你把
http://xxx.xxx.xx.xx/xxxxxxxx/xx
改为
http://xxx.xxx.xx.xx/xxxxxxxx/xx?rand=yyyymmddhhmmss
试试,这个保证不会拿到缓存