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 ” 当然你需要根据你的需要来组织这里的内容。
下面源程序中与上一页“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();