MFC HTTP POST转载,参考一下
2011-02-10 11:58
253 查看
转载,参考一下
2002年的东西。
看我的代码(我宝贵的代码啊~不把分全都给我,我就跟你没完!)
void CInternet::Post(CString& csResponse,//反馈,这个就是你要的
const char *szServer,//服务器
INTERNET_PORT& nPort,//端口
const char* szObject,//URI
const char *szData, //正文内容
DWORD& dwHttpStatus,//状态码
BOOL bAutoRedirect)//是否自动转向
{
CInternetSession* pSession = NULL;
CHttpConnection* pConnection = NULL;
CHttpFile* pHttpFile = NULL;
try
{
pSession = new CInternetSession(
NULL,
1,
INTERNET_OPEN_TYPE_PRECONFIG);
pConnection = pSession-> GetHttpConnection(szServer,
nPort,
NULL,
NULL);
DWORD dwFlag= INTERNET_FLAG_EXISTING_CONNECT
| INTERNET_FLAG_RELOAD
| INTERNET_FLAG_DONT_CACHE;
if(!bAutoRedirect)
{
dwFlag = dwFlag| INTERNET_FLAG_NO_AUTO_REDIRECT;
}
pHttpFile = pConnection-> OpenRequest(
CHttpConnection::HTTP_VERB_POST,
szObject,
szServer,
1,
NULL,
NULL,
dwFlag);
pHttpFile-> AddRequestHeaders( "Content-Type: application/x-www-form-urlencoded ",HTTP_ADDREQ_FLAG_ADD_IF_NEW,-1L);
pHttpFile-> SendRequest(NULL,0,
(void *)szData,
strlen(szData));
if (pHttpFile)
{
if (pHttpFile-> QueryInfoStatusCode(dwHttpStatus)!=0)
{// dwHttpStatus = 200;
if (dwHttpStatus < 400)
{
int nRead = 0;
LPSTR pBuffer = new char[1024];
do
{
nRead = pHttpFile-> Read(pBuffer, 1023);
if (nRead != 0)
{
pBuffer[nRead] = 0;
csResponse += pBuffer;
}
} while (nRead != 0);
if(pBuffer)
{
delete pBuffer;
pBuffer = NULL;
}
}
}
}
}
catch (CInternetException* e)
{
e-> Delete();
}
catch (...)
{
}
if (pHttpFile != NULL)
{
pHttpFile-> Close();
delete pHttpFile;
}
if (pConnection != NULL)
{
pConnection-> Close();
delete pConnection;
}
if (pSession != NULL)
{
pSession-> Close();
delete pSession;
}
}
例子:
CInternet internet;
CString csResponse;
unsigned short nPort = 80;
DWORD dwRes = 0;
internet.Post(csResponse, "www.csdn.net ",nPort, "member/login.asp ", "name=111222&pass=rrrrr ",dwRes,TRUE);
AfxMessageBox(csResponse);
2002年的东西。
看我的代码(我宝贵的代码啊~不把分全都给我,我就跟你没完!)
void CInternet::Post(CString& csResponse,//反馈,这个就是你要的
const char *szServer,//服务器
INTERNET_PORT& nPort,//端口
const char* szObject,//URI
const char *szData, //正文内容
DWORD& dwHttpStatus,//状态码
BOOL bAutoRedirect)//是否自动转向
{
CInternetSession* pSession = NULL;
CHttpConnection* pConnection = NULL;
CHttpFile* pHttpFile = NULL;
try
{
pSession = new CInternetSession(
NULL,
1,
INTERNET_OPEN_TYPE_PRECONFIG);
pConnection = pSession-> GetHttpConnection(szServer,
nPort,
NULL,
NULL);
DWORD dwFlag= INTERNET_FLAG_EXISTING_CONNECT
| INTERNET_FLAG_RELOAD
| INTERNET_FLAG_DONT_CACHE;
if(!bAutoRedirect)
{
dwFlag = dwFlag| INTERNET_FLAG_NO_AUTO_REDIRECT;
}
pHttpFile = pConnection-> OpenRequest(
CHttpConnection::HTTP_VERB_POST,
szObject,
szServer,
1,
NULL,
NULL,
dwFlag);
pHttpFile-> AddRequestHeaders( "Content-Type: application/x-www-form-urlencoded ",HTTP_ADDREQ_FLAG_ADD_IF_NEW,-1L);
pHttpFile-> SendRequest(NULL,0,
(void *)szData,
strlen(szData));
if (pHttpFile)
{
if (pHttpFile-> QueryInfoStatusCode(dwHttpStatus)!=0)
{// dwHttpStatus = 200;
if (dwHttpStatus < 400)
{
int nRead = 0;
LPSTR pBuffer = new char[1024];
do
{
nRead = pHttpFile-> Read(pBuffer, 1023);
if (nRead != 0)
{
pBuffer[nRead] = 0;
csResponse += pBuffer;
}
} while (nRead != 0);
if(pBuffer)
{
delete pBuffer;
pBuffer = NULL;
}
}
}
}
}
catch (CInternetException* e)
{
e-> Delete();
}
catch (...)
{
}
if (pHttpFile != NULL)
{
pHttpFile-> Close();
delete pHttpFile;
}
if (pConnection != NULL)
{
pConnection-> Close();
delete pConnection;
}
if (pSession != NULL)
{
pSession-> Close();
delete pSession;
}
}
例子:
CInternet internet;
CString csResponse;
unsigned short nPort = 80;
DWORD dwRes = 0;
internet.Post(csResponse, "www.csdn.net ",nPort, "member/login.asp ", "name=111222&pass=rrrrr ",dwRes,TRUE);
AfxMessageBox(csResponse);
相关文章推荐
- 转载---HttpUrlConnection发送post请求汉字出现乱码的一个解决方法及其原因
- 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别
- [转载]学习VC MFC开发必须了解的常用宏和指令————复习一下
- HTTP POST GET 本质区别详解(转载)
- [转载]HTTP POST GET 本质区别详解
- HTTP POST GET 本质区别详解(转载)
- 浅谈HTTP中Get与Post的区别 (转载)
- MFC画图的基本知识 转载链接http://lc7cl.iteye.com/blog/1336221
- HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误(转载)
- 转载 浅谈HTTP中Get与Post的区别
- (转载).Net HttpPost的发送和接收示例代码
- MFC之HTTP post请求
- MFC使用HttpGet和HttpPost方法与服务器通信
- 【转载】浅谈HTTP中Get与Post的区别
- 转载自(http://snailz.diandian.com/post/2012-10-24/40041265730)
- HTTP协议中PUT和POST使用区别 【转载】
- [转载]http以post方式上传一个文件,构造其请求头和消息报文
- HTTP参考 - 转载
- HTTP中Get与Post的区别(转载)
- MFC使用HttpGet和HttpPost方法与服务器通信