c++以POST方式向網頁提交資料流
阿新 • • 發佈:2019-02-19
#include <iostream>
#include <string>
#include <afxinet.h> //定義了MFC CInternetSession類等
bool PostHttpPage(const std::string& hostName, const std::string& pathName, const std::string& postData)
{
using namespace std;
CInternetSession session("your app agent name" );
try
{
INTERNET_PORT nPort = 80;
DWORD dwRet = 0;
CHttpConnection* pServer = session.GetHttpConnection(hostName.c_str(), nPort);
CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, pathName.c_str());
// CString strHeaders = "Content-Type: application/x-www-form-urlencoded"; // 請求頭
CString strHeaders = "multipart/form-data" //通過post上傳資料流,如檔案等
//開始傳送請求
pFile->SendRequest(strHeaders,(LPVOID)postData.c_str(),postData.size());
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CString result, newline;
while (pFile->ReadString(newline))
{
//迴圈讀取每行內容
result += newline+"\r\n";
}
std::cout<<result<<std::endl;//顯示返回內容
}
else
{
return false;
}
delete pFile;
delete pServer;
}
catch (CInternetException* pEx)
{
//catch errors from WinInet
TCHAR pszError[200];
pEx->GetErrorMessage(pszError, 200);
std::cout<<pszError<<std::endl;//顯示異常資訊
return false;
}
session.Close();
return true;
}
int main(void)
{
//向http://current.sinaapp.com/post.php傳送資料
PostHttpPage("current.sinaapp.com","post.php","name=rain&age=12");
}