高分求救! winInet API问题:用InternetWriteFile() 为什么POST不上数据?
edoch 2006-06-06 06:04:00
提交给HTTP Server端的始终只有HttpSendRequestEx()中的数据,用InternetWriteFile()提交的POST数据没起作用,请大侠们指教!
......
requestUrl = m_szIndexURL;
static LPSTR accept[2]={"text/*", NULL};
m_hRequest = HttpOpenRequest(m_hConnect,
"POST",
requestUrl,
NULL,
NULL,
(const char**)&accept[0],
INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE,
(LPARAM)this);
if (m_hRequest == NULL)
{
if (GetLastError() != ERROR_IO_PENDING)
{
return FALSE;
}
WaitForSingleObject(m_hConnectedEvent, INFINITE);
}
static TCHAR szHeader[] = "Content-Type: application/x-www-form-urlencoded";
INTERNET_BUFFERS IntBuff;
int nSendDataLength = strlen(szHeader);
FillMemory(&IntBuff, sizeof(IntBuff), 0);
IntBuff.dwStructSize= sizeof(IntBuff);
IntBuff.dwBufferTotal = nSendDataLength+1;
IntBuff.lpcszHeader = szHeader;
IntBuff.dwHeadersLength = lstrlen(IntBuff.lpcszHeader);
if (!HttpSendRequestEx(m_hRequest,
&IntBuff,
NULL,
0,
(LPARAM)this))
{
if (GetLastError() != ERROR_IO_PENDING)
{
return FALSE;
}
WaitForSingleObject(m_hRequestCompleteEvent, INFINITE);
}
DWORD dwBytesWritten;
char szSendData[1024];
memset(szSendData, 0, 1024);
strcpy(szSendData, frmData.GetBuffer(frmData.GetLength()));//POST数据
int nLen = strlen(szSendData);
if(!InternetWriteFile(m_hRequest,
szSendData,
nLen+1,
&dwBytesWritten))
{
if (GetLastError() != ERROR_IO_PENDING)
{
return FALSE;
}
else
{
WaitForSingleObject(m_hRequestCompleteEvent, INFINITE);
}
}
if (!HttpEndRequest(m_hRequest, NULL, HSR_INITIATE, (LPARAM)this))
{
if (GetLastError() == ERROR_IO_PENDING)
{
WaitForSingleObject(m_hRequestCompleteEvent, INFINITE);
}
else
{
return FALSE;
}
}
......