我在网站上放了一个test1.asp文件,内容如下
<%
response.write("hello")
%>
用以下代码同步访问这个网页,MessageBox输出结果为“hellotrcore.cpp”而不是“hello”,这里有一点奇怪,不知道为什么呢?
HINTERNET hSession,hOpenURL;
CString strLoad;
DWORD dwBytesAvailable = 0, dwBytesDownloaded = 0;
hSession=InternetOpen("test",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
hOpenURL=InternetOpenUrl(hSession,".../test1.asp",NULL,0,INTERNET_FLAG_RELOAD,0);
if (hOpenURL)
{
do {
if (InternetQueryDataAvailable(hOpenURL, &dwBytesAvailable,0,0))
{
CString s;
InternetReadFile(hOpenURL, (LPSTR)(LPCTSTR)s, dwBytesAvailable, &dwBytesDownloaded);
strLoad += s;

else  // end of data
break;
} while (dwBytesDownloaded > 0);
AfxMessageBox(strLoad);
}
InternetCloseHandle(hOpenURL);
InternetCloseHandle(hSession);更重要的是用以下代码异步访问这个网页,
m_hSession=InternetOpen("test",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,INTERNET_FLAG_ASYNC);
InternetSetStatusCallback(m_hSession,(INTERNET_STATUS_CALLBACK) Juggler);
hOpenURL=InternetOpenUrl(hSession,".../test1.asp",NULL,0,INTERNET_FLAG_RELOAD,0);触发了以下的回调函数,但是不管哪种case,MessageBox输出结果都为空,到底应该如何解决才好呢?请帮忙看看吧,谢谢。
void __stdcall CALLBACK CWinInetTestDlg::Juggler(HINTERNET hInternet, DWORD dwContext, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength)
{
CString strLoad;
DWORD dwBytesAvailable = 0, dwBytesDownloaded = 0;
CWinInetTestDlg *pThis=(CWinInetTestDlg *)dwContext;
switch (dwInternetStatus)
{ case INTERNET_STATUS_RECEIVING_RESPONSE:
AfxMessageBox("RECEIVING_RESPONSE");
do {
if (InternetQueryDataAvailable(pThis->m_hOpenURL, &dwBytesAvailable,0,0))
{
AfxMessageBox("InternetQueryDataAvailable ok");
CString s;
InternetReadFile(pThis->m_hOpenURL, (LPSTR)(LPCTSTR)s, dwBytesAvailable, &dwBytesDownloaded);
strLoad += s;

else  // end of data
break;
} while (dwBytesDownloaded > 0);
AfxMessageBox(strLoad);
case INTERNET_STATUS_RESPONSE_RECEIVED:
AfxMessageBox("RESPONSE_RECEIVED");
do {
if (InternetQueryDataAvailable(pThis->m_hOpenURL, &dwBytesAvailable,0,0))
{
AfxMessageBox("InternetQueryDataAvailable ok");
CString s;
InternetReadFile(pThis->m_hOpenURL, (LPSTR)(LPCTSTR)s, dwBytesAvailable, &dwBytesDownloaded);
strLoad += s;

else  // end of data
break;
} while (dwBytesDownloaded > 0);
AfxMessageBox(strLoad);
case INTERNET_STATUS_CONNECTED_TO_SERVER:
AfxMessageBox("CONNECTED_TO_SERVER");
do {
if (InternetQueryDataAvailable(pThis->m_hOpenURL, &dwBytesAvailable,0,0))
{
AfxMessageBox("InternetQueryDataAvailable ok");
CString s;
InternetReadFile(pThis->m_hOpenURL, (LPSTR)(LPCTSTR)s, dwBytesAvailable, &dwBytesDownloaded);
strLoad += s;

else  // end of data
break;
} while (dwBytesDownloaded > 0);
AfxMessageBox(strLoad);
break;
case INTERNET_STATUS_REQUEST_COMPLETE:
AfxMessageBox("REQUEST_COMPLETE");
do {
if (InternetQueryDataAvailable(pThis->m_hOpenURL, &dwBytesAvailable,0,0))
{
AfxMessageBox("InternetQueryDataAvailable ok");
CString s;
InternetReadFile(pThis->m_hOpenURL, (LPSTR)(LPCTSTR)s, dwBytesAvailable, &dwBytesDownloaded);
strLoad += s;

else  // end of data
break;
} while (dwBytesDownloaded > 0);
AfxMessageBox(strLoad); InternetCloseHandle(pThis->m_hOpenURL);
InternetCloseHandle(pThis->m_hSession);
break;
}
}