CWinHttpRequest *m_pHttpReq;
CString GetDataFromNet(CString strUrl)
{
COleVariant asyn = VARIANT_FALSE;
m_pHttpReq->Open(_T("GET"), strUrl, asyn);
m_pHttpReq->Send(vtMissing);
CString strOut = m_pHttpReq->get_ResponseText();
return strOut;
}
如果采用多字节字符,如果strOut中含有中文,则中文显示乱码,通过WideCharToMultiByte是不能转换成功的,问题可能就出在get_ResponseText()转换出的CString。
因此采用新的方法来解决:
CString GetDataFromNet(CString strUrl)
{
COleVariant asyn = VARIANT_FALSE;
m_pHttpReq->Open(_T("GET"), strUrl, asyn);
m_pHttpReq->Send(vtMissing);
CString strOut = m_pHttpReq->get_ResponseText();
VARIANT v1 = m_pHttpReq->get_ResponseBody();
LONG iLen = 0;
SafeArrayGetUBound(v1.parray, 1, &iLen);
char *pcData = new char[iLen + 1];
memset(pcData, 0, iLen + 1);
LONG i = 10;
for (i = 0; i < iLen; i++)
{
SafeArrayGetElement(v1.parray, &i, pcData + i);
}
CString strOut(pcData);
delete[] pcData;
pcData = NULL;
return strOut;
}
这样就能完美解决!