日期:2014-05-18  浏览次数:20492 次

急!MFC的POST请求为啥不成功???[在线等解!]
客户端代码如下:
C/C++ code
TCHAR* szHeaders = _T("Content-Type: application/x-www-form-urlencoded");
TCHAR* szFormDate = _T("p=John\r\n");
DWORD dw;
INTERNET_PORT nPort = 2352;

CInternetSession session;
CHttpConnection* pConnection = session.GetHttpConnection(_T("localhost"),nPort);
dw= GetLastError();
CHttpFile* pFile = NULL;
pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/Update/Update.aspx"));
dw= GetLastError(); // dw = 122
BOOL result = pFile->SendRequest( szHeaders, (DWORD)wcslen(szHeaders), (LPVOID)szFormDate, (DWORD)wcslen(szFormDate));
pFile->QueryInfoStatusCode(dw); // dw=200
    
char szServerMsg[10240];
DWORD dwFileSize = 0; 
UINT nSize = pFile->Read(szServerMsg,   1024);   
  while (nSize > 0)   
  {   
    dwFileSize += nSize;
    nSize = pFile->Read(szServerMsg + nSize, 1024);   
  }
  szServerMsg[dwFileSize] = '\0';


//szServerMsg 中返回

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
Update Page
</title></head>
<body>
<form name="form1" method="post" action="Update.aspx" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNTExNDk4MTQ4ZGScs0hENO9Ms4muXBD1j2nn/FyT+A==" />

<div>
<hr />
<input type="submit" name="Button_Get" value="GET" id="Button_Get" /><br />
<table id="Table_File" rules="all" border="1" height="73" width="149">

</table>
<br />
<span id="Label_FileCount"><font face="Tahoma" size="2"></font></span><br />
</div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLula3NCwLVyryJCGowUVe1rv9Pa6Pf2P/wVVRvgNCd" /></form>
</body>
</html>

服务器端代码:
C# code
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Request.Form["p"]);
        Response.Write(Request.QueryString["g"]);
        
    }


到底是为什么!!!???

------解决方案--------------------
再就是OpenRequest第一个参数可以是字符串,不知道用“POST”做参数可不可以,以前弄SOAP协议没有成功,就改用.net做了。

CHttpFile* OpenRequest( LPCTSTR pstrVerb, LPCTSTR pstrObjectName, LPCTSTR pstrReferer = NULL, DWORD dwContext = 1, LPCTSTR* pstrAcceptTypes = NULL, LPCTSTR pstrVersion = NULL, DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT );

CHttpFile* OpenRequest( int nVerb, LPCTSTR pstrObjectName, LPCTSTR pstrReferer = NULL, DWORD dwContext = 1, LPCTSTR* pstrAcceptTypes = NULL, LPCTSTR pstrVersion = NULL, DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT );