用WinInet向ASP发送POST请求的问题,请高手指教!

Mickey_Chue 2002-12-30 10:11:00
程序如下:

//解析URL地址
AfxParseURL(m_strUrl, m_dwServiceType, m_strServerName, m_strObject, m_nPort);
//建立INTERNET连接
CInternetSession ISession(_T("Tax SSL HTTP Sender"));
DWORD dwHttpRequestFlags = INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT;
//头信息及数据内容
CString strHeader = _T("Content-Type: application/x-www-form-urlencoded");
CString strData = _T("This is a Test for http.");
//HTTP连接
CHttpConnection* pIServer = NULL;
CHttpFile* pFile = NULL;
try
{
pIServer = ISession.GetHttpConnection(m_strServerName, m_nPort);
pFile = pIServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, m_strObject); //, NULL, 1, NULL, NULL, dwHttpRequestFlags);
BOOL result = pFile->SendRequest(strHeader,(LPVOID)(LPCTSTR)strData, strData.GetLength());
//取返回数据
TCHAR sz[1024];
while (pFile->ReadString(sz, 1023))
cout << sz;
cout << endl;
}
catch(...)
{.....}

问题如下:
pFile->SendRequest()调用成功,而且ReadString可以读到ASP返回的数据,不过ASP端却没有收到发送的数据("This is a Test for http."),请高手指点一下是什么问题。

ASP端使用以下语句接收:
data=Request.Form
data=transtr(data)
'写日志
set fso=server.CreateObject("scripting.filesystemobject")
set myfile=fso.OpenTextFile("c:\testlog.txt",8,true)
myfile.writeline(now)
myfile.writeline(data)
myfile.WriteBlankLines(1)
'返回数据
temp = "HTTP Request Test OK!"
Response.Write temp

--
============
oO菩提葡萄Oo
============
...全文
103 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterz 2002-12-30
  • 打赏
  • 举报
回复
void post()
{
CInternetSession session("My Session");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString ServerName = "webmail.21cn.com";
INTERNET_PORT nPort = 80;
DWORD retcode;
char outBuff[300] = "LoginName=aaa&passwd=xxx&DomainName=21cn.com";//I have test this with my loginname and password
try
{
pServer = session.GetHttpConnection(ServerName,nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/NULL/NULL/NULL/NULL/NULL/SignIn.gen",NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
pFile -> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded");
pFile -> AddRequestHeaders("Accept: */*");
pFile -> SendRequest(NULL,0,outBuff,strlen(outBuff)+1);
pFile -> QueryInfoStatusCode(retcode);
// you can read from the file after this......I've just left it out.
for(int i=0;i<10;i++)//read ten line of returned HTML,you need to edit this to use the result
{
CString smsg;
pFile->ReadString(smsg);
AfxMessageBox(smsg);
}
DWORD dwlen=pFile->GetLength();
char buf[1024];
DWORD dwread=pFile->Read(buf,1024);
}
catch (CInternetException * e){};
delete pFile;
delete pServer;
session.Close();
}
Mickey_Chue 2002-12-30
  • 打赏
  • 举报
回复
问题已经解决,把下句中的INTERNET_FLAG_NO_AUTO_REDIRECT去掉就可以了,不过有没有人告诉我为什么不可以加这个标志吗?谢谢!

DWORD dwHttpRequestFlags = INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT;

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧