CString aa = _T("http://39.98.237.78/sycompany/machineLog/add?ChannelName=黑龍江&ChannelId=5454");//這個就發不出去
CString aa = _T("http://39.98.237.78/sycompany/machineLog/add?ChannelId=5454");//這個能發出去
INT CFileMoniterDlg::DownloadFile(const CString strUrl)
{
//檢查傳入的兩個引數
if (strUrl.IsEmpty())
return -5;
unsigned short nPort; //用于保存目標HTTP服務埠
CString strServer, strObject; //strServer用于保存服務器地址,strObject用于保存檔案物件名稱
DWORD dwServiceType, dwRet; //dwServiceType用于保存服務型別,dwRet用于保存提交GET請求回傳的狀態號
//決議URL,獲取資訊
if (!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort)) {
//決議失敗,該Url不正確
return -1;
}
//創建網路連接物件,HTTP連接物件指標和用于該連接的HttpFile檔案物件指標,注意delete
CInternetSession intsess;
CHttpFile *pHtFile = NULL;
CHttpConnection *pHtCon = NULL;
intsess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 1000 * 20); //連接超時
intsess.SetOption(INTERNET_OPTION_CONNECT_BACKOFF, 1000); //兩次重試之間的間隔時間
intsess.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1); // 2次重試
intsess.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 6000); //發送請求的超時時間
intsess.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 6000); //接受資料的超時時間
try {
//建立網路連接
pHtCon = intsess.GetHttpConnection(strServer, nPort);
if (pHtCon == NULL) {
//建立網路連接失敗
intsess.Close();
return -2;
}
//發起GET請求
pHtFile = pHtCon->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject);
if (pHtFile == NULL)
{
//發起GET請求失敗
intsess.Close();
delete pHtCon;
pHtCon = NULL;
return -3;
}
//提交請求
pHtFile->SendRequest();
//獲取服務器回傳的狀態號
pHtFile->QueryInfoStatusCode(dwRet);
if (dwRet != HTTP_STATUS_OK) {
//服務器不接受請求
intsess.Close();
delete pHtCon; pHtCon = NULL;
delete pHtFile; pHtFile = NULL;
return -4;
}
}
catch (CInternetException* e) {
e->Delete();
intsess.Close();
delete pHtCon; pHtCon = NULL;
delete pHtFile; pHtFile = NULL;
return -2;
}
////獲取檔案大小
//UINT nFileLen = (UINT)pHtFile->GetLength();
//DWORD dwRead = 1; //用于標識讀了多少,為1是為了進入回圈
// //創建緩沖區
//CHAR *szBuffer = new CHAR[nFileLen + 1];
//TRY{
// //創建檔案
// CFile PicFile(strSavePath,CFile::modeCreate | CFile::modeWrite | CFile::shareExclusive);
//while (dwRead>0)
//{
// //清慷訓沖區
// memset(szBuffer,0,(size_t)(nFileLen + 1));
// //讀取到緩沖區
// dwRead = pHtFile->Read(szBuffer,nFileLen);
// //寫入到檔案
// PicFile.Write(szBuffer,dwRead);
//}
////關閉檔案
//PicFile.Close();
//釋放記憶體
//delete[]szBuffer;
delete pHtFile;
delete pHtCon;
//關閉網路連接
intsess.Close();
// CATCH(CFileException, e)
//{
// //釋放記憶體
// delete[]szBuffer;
// delete pHtFile;
// delete pHtCon;
// //關閉網路連接
// intsess.Close();
// return -7; //讀寫檔案例外
//}
//END_CATCH
return 0;
}
求大神幫小弟看一看是怎么回事
uj5u.com熱心網友回復:
Http請求時URL中的中文編碼轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/264297.html
標籤:HTML/XML
