POST方式发送数据POST方式和GET的区别就是把发送的数据和网页地址分离开来。把数据放在HTTP协议的head部分,因此程序中多了一个 strHeaders = _T("Content-Type: application/x-www-form-urlencoded") 这个内容你还可以根据你的需要来改变,例如改为图像,或者二进制文件等。 下面源程序中与上一页“GET方式发送数据”不同的地方我都用蓝色标出;其中strFormData就是要发送的格式,内容是“curl=中国人&http=http://www.chinaren.comc&url=松鼠之家&http=http://www.fadshop.net/squirrel/&curl=新语丝&http=http://www.xys.org” 当然你需要根据你的需要来组织这里的内容。
#ifndef _DEBUG
strHttpName="http://www.fadshop.net/curl/progsave.asp";
#else
strHttpName = "http://Mycomputer/fadshop/curl/progsave.asp";
#endif
// strHttpName = strHttpName + "?" + strFormData;
用GET方式发送数据就采用这句话
CInternetSession sess;//建立会话
CHttpFile* fileGet;
CString strHeaders =
_T("Content-Type: application/x-www-form-urlencoded");
CException* e;
TRY
{
fileGet=(CHttpFile*)sess.OpenURL(strHttpName);//打开文件
}
CATCH_ALL(e)
{
TRACE("Err:%d\n", GetLastError());
fileGet = 0;
}
END_CATCH_ALL
if(fileGet)
{
DWORD dwStatus;
DWORD dwBuffLen = sizeof(dwStatus);
BOOL bSuccess = fileGet->QueryInfo(
HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
&dwStatus, &dwBuffLen);
strGetSentence = "";
if( bSuccess && dwStatus>= 200 &&dwStatus<300 ) {
BOOL result = fileGet->SendRequest(strHeaders,
(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
while(fileGet->ReadString(strSentence)){
strGetSentence = strGetSentence + strSentence + char(13) +
char(10);
}//取得返回的字节并显示 SetDlgItemText(IDC_COMMENT,
strGetSentence); SetDlgItemText(IDC_UPLOADMSG,
"上传完毕,松鼠谢谢您的合作。"); }// if
bSuccess.
else SetDlgItemText(IDC_UPLOADMSG,
"上传出错\n请下次再执行,或者到松鼠之家查看最新信息。");fileGet->Close();
delete fileGet;
}
else
SetDlgItemText(IDC_UPLOADMSG, "网络不通,请检查你的网络连接情况。");
sess.Close();
|
| Copyright 1998-2002 Fadshop.net, Inc. All rights reserved. jhj123@163.net |