需求说是这么写的:“系统在分配每个合作方帐号时,合作方需要提供一个结果通知URL,在以上两个接口中提交扫描请求后,我们在完成扫描后会自动请求提供的URL通知扫描结果,将扫描结果通过参数名为report的参数通过POST方式发送到提供的URL页面”需求是上传一个文件到服务器上,服务器对文件进行扫描,然后返回扫描的结果,现在上传文件和对应的参数功能已经实现了,但是扫描结果不知道怎么接受,我想弹出一个消息框,把结果写到里边,不知怎么实现:需求文档上写的post参数有一项是“完成扫描后返回结果的URL”但是我用的MFC,所以不知道怎么接受这个结果代码是:
CString CHttpClient::doPost(CString href)
{
CInternetSession session1; //建立Internet会话
CHttpConnection* conn1=NULL; //http连接对象指针
CHttpFile* pFile = NULL; //
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
AfxParseURL((LPCTSTR)href,dwServiceType, strServerName, strObject, nPort);
DWORD retcode;
char* outBuff = CONTENT.GetBuffer(1000);
try
{
conn1 = session1.GetHttpConnection(strServerName,nPort);
pFile = conn1->OpenRequest(0,strObject,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_AUTO_REDIRECT);
pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
pFile -> AddRequestHeaders("Accept: */*");
pFile -> SendRequest(NULL,0,outBuff,strlen(outBuff)+1);
pFile -> QueryInfoStatusCode(retcode);
}
catch(CInternetException * e)
{ }
if(pFile)
{
CString text;
for(int i=0;pFile->ReadString(text);i++)
{
httpsource_post=httpsource_post+text+"\r\n";
}
pFile->Close();
}else
{
}
return httpsource_post;
delete pFile;
delete conn1;
session1.Close();
} 但是httpsource_post返回的是开始扫描的信息,扫描完成后的信息怎么得到呀?
CString CHttpClient::doPost(CString href)
{
CInternetSession session1; //建立Internet会话
CHttpConnection* conn1=NULL; //http连接对象指针
CHttpFile* pFile = NULL; //
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
AfxParseURL((LPCTSTR)href,dwServiceType, strServerName, strObject, nPort);
DWORD retcode;
char* outBuff = CONTENT.GetBuffer(1000);
try
{
conn1 = session1.GetHttpConnection(strServerName,nPort);
pFile = conn1->OpenRequest(0,strObject,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_AUTO_REDIRECT);
pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
pFile -> AddRequestHeaders("Accept: */*");
pFile -> SendRequest(NULL,0,outBuff,strlen(outBuff)+1);
pFile -> QueryInfoStatusCode(retcode);
}
catch(CInternetException * e)
{ }
if(pFile)
{
CString text;
for(int i=0;pFile->ReadString(text);i++)
{
httpsource_post=httpsource_post+text+"\r\n";
}
pFile->Close();
}else
{
}
return httpsource_post;
delete pFile;
delete conn1;
session1.Close();
} 但是httpsource_post返回的是开始扫描的信息,扫描完成后的信息怎么得到呀?
你可以先抓包分析一下它提交过来的数据,然后再进行处理,处理方法有:
1,通过动态脚本语言将数据插入数据库,然后MFC再去读取结果
2,通过SOCKET模拟HTTP协议,接收它的请求
3,直接在动态脚本语言(asp,jsp,php,.net...)中处理
那个自己指定的返回URL不是必须的,我做的是客户端,想用MFC的消息框接受这个结果,请问发送什么命令请求结果?