不管是中文还是英文都是乱码,用了各种转字符集的方法都没用
服务器跟客户端是同类型操作系统吗,不同操作系统之间的存在大小端的问题,比如说,int类型的数据,有的系统下高位字节在前,有的系统低位在前,这样就容易导致乱码,需要在传输之前先按照规定好的规则进行编码,然后再传输,接收端根据规则解码,得到实际的数据
void sendPost::SendPost(CString& strRequest, CString &str, CString request)//request为请求地址,strRequest为请求参数
{
CInternetSession m_InetSession;
CHttpConnection* pServer = NULL;
CHttpConnection* pConnection;
CString http = _T("");
CHttpFile* pFile = NULL;
CString temp = _T("");
USES_CONVERSION;
char* c = UnicodeToUtf8(W2A(strRequest));//转换为UTF_8格式,服务器输出没问题
try {
INTERNET_PORT nPort; //端口
nPort = 8080;
pConnection = m_InetSession.GetHttpConnection(_T("localhost"), nPort);
pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, request);
pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));//设置表头
pFile->AddRequestHeaders(_T("Accept-Language: zh-cn"));
pFile->SendRequest(NULL, 0, (LPVOID)c, strlen(c));//发送请求参数
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK) {
while (pFile->ReadString(temp))
{
http += str;//接收数据
}
}
str = http;//乱码
delete pFile;
delete pServer;
}