最近在做MFC和Java搭建的Web平台进行Http通信,尝试了CUrl方式进行通信,可总是提示各种动态链接库的问题以及程序入口点等问题,也尝试了用CSocket的方式模拟Http进行通信,我发送的消息Java平台可以收到,但是Java平台发送给我的消息,一直在CSocket::OnReceive函数中接收不到:这个函数有响应,说明Java平台有数据发送过来,但是Receive函数中接受的数据是空,猜测是Java端和MFC端的字符格式不一样,需要进行一定的转换。最后尝试了WinHttp的方式,终于将问题解决了。以下是相应代码代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;">#include "stdafx.h"
#include <afx.h>
#include <vector>
#include <winhttp.h>
#pragma comment(lib,"winhttp.lib")
int SplitString(CString str_in, CString chSplit_in,
BOOL bAllowNullString,std::vector<CString>& data) //将输入字符串按照指定分隔符进行分割
{
data.clear();
str_in.TrimLeft();
str_in.TrimRight();
if(str_in.GetLength()==0)
return 0;
if(chSplit_in.GetLength() == 0)
{
data.push_back(str_in);
return 1;
}
CString s;
int n;
do
{
n = str_in.Find(chSplit_in);
if(n > 0)
{
data.push_back(str_in.Left(n));
str_in = str_in.Right(str_in.GetLength()-n-chSplit_in.GetLength());
str_in.TrimLeft();
}
else if(n==0)
{
if(bAllowNullString)
data.push_back(_T(""));
str_in = str_in.Right(str_in.GetLength()-chSplit_in.GetLength());
str_in.TrimLeft();
}
else
{
if((str_in.GetLength()>0)||bAllowNullString)
data.push_back(str_in);
break;
}
} while(1);
return data.size();
}
void GetServerAndObjectName(CStri