本文整理汇总了C++中CHttpConnection类的典型用法代码示例。如果您正苦于以下问题:C++ CHttpConnection类的具体用法?C++ CHttpConnection怎么用?C++ CHttpConnection使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CHttpConnection类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetDlgItem
bool CLoginDialog::pinReminder(){
CString username, email;
int country=((CComboBox*) GetDlgItem(IDC_COUNTRY))->GetCurSel();
std::string userPhone=countries[country][1];
userPhone.erase(std::find(userPhone.begin(), userPhone.end(), '+'));
userPhone.erase(std::find(userPhone.begin(), userPhone.end(), '-'));
GetDlgItemText(IDC_PHONE,username);
username=(CString)userPhone.c_str()+username;
GetDlgItemText(IDC_EMAIL,email);
std::string header = "/oneworld/forgotpin?number=";
header+=(CT2CA)username;
header+="&email=";
header+=(CT2CA)email;
CInternetSession session;
CHttpConnection *pConnection = session.GetHttpConnection(_T("89.163.142.253"));
char result[500];
CString request(header.c_str());
CHttpFile *pFile = pConnection->OpenRequest(1,request);
if(!pFile->SendRequest())
return false;
//pFile->QueryInfo(HTTP_QUERY_FLAG_REQUEST_HEADERS,result,(LPDWORD)500);
#ifdef _DEBUG
pFile->Read((void*)result,500);
_cprintf("%s",result);
#endif
return true;
}
示例2: LoadList
void Conference::LoadList(){
CListCtrl *conf= (CListCtrl*)GetDlgItem(IDC_CONFLIST);
conf->DeleteAllItems();
std::string header = "/oneworld/conf_list?api_token=";
header+=((CmicrosipDlg*)GetParent())->getToken();
CInternetSession session;
CHttpConnection *pConnection = session.GetHttpConnection(_T("89.163.142.253"));
char result[500];
CString request(header.c_str());
CHttpFile *pFile = pConnection->OpenRequest(1,request);
if(!pFile->SendRequest())
return;
pFile->Read((void*)result,500);
char* status = strchr(result,']'); //checking if data is receive and is parseable
char* eom = strchr(result,'}');
#ifdef _DEBUG
_cprintf("Size: %p, %p, %d\n",result, status, (status-result));
#endif
if(status==NULL)
result[eom-result+1]='\0';
else if(status - result < 4998)
result[status - result +2]='\0';
#ifdef _DEBUG
_cprintf("Result: %s\n",result);
#endif
cJSON *root = cJSON_Parse(result);
cJSON *msg = cJSON_GetObjectItem(root,"msg");
if((status==NULL && msg == NULL) || status-result >= 4999 )
return;
else if(status==NULL)
return;
cJSON *data = cJSON_GetObjectItem(root,"data");
int size=cJSON_GetArraySize(root);
#ifdef _DEBUG
_cprintf("Size: %d\n",size);
#endif
size=cJSON_GetArraySize(data);
#ifdef _DEBUG
_cprintf("Size: %d\n",size);
#endif
for(int i=0;i<size;i++){
cJSON* item= cJSON_GetArrayItem(data,i);
CString confNum(cJSON_GetObjectItem(item,"confno")->valuestring);
CString pin(cJSON_GetObjectItem(item,"pin")->valuestring);
#ifdef _DEBUG
_cprintf("Item: %s\n",(CT2CA)confNum);
_cprintf("Pin: %s\n",(CT2CA)pin);
#endif
int index = conf->InsertItem(i, confNum);
conf->SetItemText(index, 1, pin);
//conf->SetItemData(i, &confNum);
}
}
示例3: m_InetSession
void CHttpPostDlg::OnBtnSendpost()
{
CInternetSession m_InetSession(_T("session"),
0,
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
INTERNET_FLAG_DONT_CACHE); //设置不缓冲
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString strHtml = "";
CString ActionServer = _T("www.cqjg.gov.cn");
CString strRequest = _T("LicenseTxt=AG8091&VIN=LJDAAA21560205432"); //POST过去的数据
CString strHeaders = "Accept: text*/*\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon;";
int nRead = 0;
try
{
INTERNET_PORT nPort = 80; //端口
pServer = m_InetSession.GetHttpConnection(ActionServer, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/netcar/FindOne.aspx");
pFile->AddRequestHeaders(strHeaders);
pFile->SendRequestEx(strRequest.GetLength());
pFile->WriteString(strRequest); //重要-->m_Request 中有"name=aaa&name2=BBB&..."
pFile->EndRequest();
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CString strLine;
while ((nRead = pFile->ReadString(strLine))>0)
{
strHtml += strLine + "\n";;
}
}
int pos = strHtml.Find(_T("<li class=\"lithreeC\">"));
if(pos != -1)
{
CString Value = strHtml.Mid(pos,500);
CFile file("test.html",CFile::modeCreate|CFile::modeWrite);
file.WriteHuge(Value.GetBuffer(0),Value.GetLength());
file.Close();
//MessageBox(Value);
}
delete pFile;
delete pServer;
}
catch (CInternetException* e)
{
char strErrorBuf[255];
e->GetErrorMessage(strErrorBuf,255,NULL);
AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
}
// SendPost();
}
示例4: AfxParseURLEx
UINT CMMSSender::PostHTTP(CString csURL, BYTE* strPostData, long lDataSize, CString csHeaders, CString& csRetHeaders, CString& csRetData)
{
UINT nCode=0;
DWORD dwService;
CString csServer;
CString csPath;
INTERNET_PORT nPort;
CString csUser;
CString csPwd;
AfxParseURLEx(csURL,dwService,csServer,csPath,nPort,csUser,csPwd,0);
CHttpConnection* pConnection = NULL;
pConnection=m_pSession->GetHttpConnection(csServer,0, nPort, NULL, NULL);
if(pConnection)
{
BOOL bResult=FALSE;
CHttpFile* pFile = NULL;
pFile=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,csPath,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_NO_AUTO_REDIRECT);
if(pFile)
{
try
{
bResult=pFile->SendRequest(csHeaders, strPostData, lDataSize);
if(bResult)
{
CString csCode;
pFile->QueryInfo(HTTP_QUERY_STATUS_CODE,csCode);
nCode=atoi(csCode);
CString csHeaders;
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF,csRetHeaders);
csRetData=ReadData(pFile);
}
}
catch(CInternetException* e)
{
}
pFile->Close();
delete pFile;
}
pConnection->Close();
delete pConnection;
}
return nCode;
}
示例5: AfxParseURLEx
UINT CCopiagenda::GetHTTPS(CString csURL, CString csHeaders, CString& csRetHeaders, CString& csRetData)
{
UINT nCode;
DWORD dwService;
CString csServer;
CString csPath;
INTERNET_PORT nPort;
CString csUser;
CString csPwd;
AfxParseURLEx(csURL,dwService,csServer,csPath,nPort,csUser,csPwd,0);
CHttpConnection* pConnection = NULL;
pConnection=m_pSession->GetHttpConnection(csServer,INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_SECURE,nPort, NULL, NULL);
if(pConnection)
{
BOOL bResult=FALSE;
CHttpFile* pFile = NULL;
pFile=pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,csPath,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_AUTO_REDIRECT|INTERNET_FLAG_SECURE);
if(pFile)
{
try
{
bResult=pFile->SendRequest(csHeaders, NULL, 0);
if(bResult)
{
CString csCode;
pFile->QueryInfo(HTTP_QUERY_STATUS_CODE,csCode);
nCode=atoi(csCode);
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF,csRetHeaders);
csRetData=ReadData(pFile);
}
}
catch(CInternetException* e)
{
}
pFile->Close();
delete pFile;
}
pConnection->Close();
delete pConnection;
}
return nCode;
}
示例6: DEBUG_ASSERT
void Syscall::ConnOp::addHttpSendHeaders() {
CHttpConnection* http = mConn.http();
DEBUG_ASSERT(http->mState == CHttpConnection::SETUP);
CSO_ADD(Resolve, *http->mHostname, http->mNameEntry);
addSockConnect(*http, http->mNameEntry().iAddr, http->mPort, http->mHostname());
//prepare headers
http->FormatRequestL();
//send headers
http->mBufPtr.Set(CBufFlatPtr(http->mBuffer()));
CSO_ADD(Write, http->mBufPtr);
http->mState = CHttpConnection::WRITING;
}
示例7: session
DWORD CLoginDlg::userProfile(LPCTSTR serverURL, LPCTSTR requestPage)
{
#ifdef _HTTPS
CInternetSession session(_T("HelloChat"), INTERNET_FLAG_SECURE);
CHttpConnection* pConnection = session.GetHttpConnection(serverURL, INTERNET_SERVICE_HTTP, INTERNET_DEFAULT_HTTPS_PORT);
CString strToken = L"token:";
strToken = strToken + m_strMyToken + L"\r\n";
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, requestPage, NULL, 1, NULL, NULL, INTERNET_FLAG_SECURE | INTERNET_FLAG_RELOAD |
INTERNET_FLAG_DONT_CACHE |
INTERNET_FLAG_NO_COOKIES);
#else
CInternetSession session(_T("HelloChat"), PRE_CONFIG_INTERNET_ACCESS);
CHttpConnection* pConnection = session.GetHttpConnection(serverURL);
CString strToken = L"token:";
//strToken = strToken + m_strToken + L"\r\n";
strToken = strToken + m_strMyToken + L"\r\n";
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, requestPage, NULL, 1, NULL, NULL, INTERNET_FLAG_RELOAD |
INTERNET_FLAG_DONT_CACHE |
INTERNET_FLAG_NO_COOKIES);
#endif
VERIFY(pFile->AddRequestHeaders(HEADER));
VERIFY(pFile->AddRequestHeaders(strToken));
VERIFY(pFile->SendRequest());
// GET POST STATUS
DWORD dwPostStatus = 0;
VERIFY(pFile->QueryInfoStatusCode(dwPostStatus));
CString strBuffer = L"";
BOOL brtn = pFile->ReadString(strBuffer);
char* rtnBuffer = LPSTR(LPCTSTR(strBuffer));
if (dwPostStatus == HTTP_STATUS_OK)
{
BOOL bRtn = dataParser(rtnBuffer);
if (!bRtn){
AfxMessageBox(L"User Info Paser Error");
}
}
else{
CComm func;
func.WriteErrorLog(rtnBuffer);
}
pFile->Close();
return dwPostStatus;
}
示例8: strcpy
CString C51JobWebPost::GeHttptFile(const char *url)
{
CString szContent;
char strProxyList[MAX_PATH], strUsername[64], strPassword[64];
//in this case "proxya" is the proxy server name, "8080" is its port
strcpy(strProxyList, "125.41.181.59:8080");
strcpy(strUsername, "myusername");
strcpy(strPassword, "mypassword");
DWORD dwServiceType = AFX_INET_SERVICE_HTTP;
CString szServer, szObject;
INTERNET_PORT nPort;
AfxParseURL(url, dwServiceType, szServer, szObject, nPort);
CInternetSession mysession;
CHttpConnection* pConnection;
CHttpFile* pHttpFile;
INTERNET_PROXY_INFO proxyinfo;
proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
proxyinfo.lpszProxy = strProxyList;
proxyinfo.lpszProxyBypass = NULL;
mysession.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO));
pConnection = mysession.GetHttpConnection("125.41.181.59",
INTERNET_FLAG_KEEP_CONNECTION,
8080,
NULL, NULL);
pHttpFile = pConnection->OpenRequest("GET",url,
NULL, 0, NULL, NULL,
INTERNET_FLAG_KEEP_CONNECTION);
//here for proxy
//pHttpFile->SetOption(INTERNET_OPTION_PROXY_USERNAME, strUsername, strlen(strUsername)+1);
//pHttpFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD, strPassword, strlen(strPassword)+1);
pHttpFile->SendRequest(NULL);
DWORD nFileSize = pHttpFile->GetLength();
LPSTR rbuf = szContent.GetBuffer(nFileSize);
UINT uBytesRead = pHttpFile->Read(rbuf, nFileSize);
szContent.ReleaseBuffer();
pHttpFile->Close();
delete pHttpFile;
pConnection->Close();
delete pConnection;
mysession.Close();
return szContent;
}
示例9: _cprintf
void Conference::OnDelete()
{
CListCtrl *list= (CListCtrl*)GetDlgItem(IDC_CONFLIST);
POSITION pos = list->GetFirstSelectedItemPosition();
CString confNum;
if (pos)
{
int i = list->GetNextSelectedItem(pos);
//Call *pCall = (Call *) list->GetItemData(i);
confNum=list->GetItemText(i,0);
}
if(confNum.GetLength()==0)
return;
std::string header = "/oneworld/conf_del?api_token=";
header+=((CmicrosipDlg*)GetParent())->getToken();
header+="&confno=";
header+=(CT2CA)confNum;
#ifdef _DEBUG
_cprintf("Request: %s\n",header);
#endif
CInternetSession session;
CHttpConnection *pConnection = session.GetHttpConnection(_T("89.163.142.253"));
char result[500];
CString request(header.c_str());
CHttpFile *pFile = pConnection->OpenRequest(1,request);
if(!pFile->SendRequest())
return;
pFile->Read((void*)result,500);
char* status = strchr(result,']'); //checking if data is receive and is parseable
char* eom = strchr(result,'}');
#ifdef _DEBUG
_cprintf("Size: %p, %p, %d\n",result, status, (status-result));
#endif
if(status==NULL)
result[eom-result+1]='\0';
else if(status - result < 498)
result[status - result +2]='\0';
#ifdef _DEBUG
_cprintf("Result: %s\n",result);
#endif
LoadList();
}
示例10: session
/*
* Connect to the Tally over a specific port and get all the companies
*/
BOOL CTallyExporterDlg::GetCompanyListFromTallyServer(int port, CompanyListResponse& companyListResponseRef)
{
CInternetSession session(_T("My Session"));
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try
{
CString strServerName;
DWORD dwRet = 0;
CString strParam = "<ENVELOPE><HEADER><TALLYREQUEST>Export Data</TALLYREQUEST></HEADER><BODY><EXPORTDATA><REQUESTDESC><REPORTNAME>List of Companies</REPORTNAME></REQUESTDESC></EXPORTDATA></BODY></ENVELOPE>";
CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded;Accept-Encoding: gzip,deflate");
CString acceptedTypes[] = {_T("text/html")};
pServer = session.GetHttpConnection(_T("localhost"),NULL, port, NULL, NULL);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T(""), NULL,1,(LPCTSTR*)acceptedTypes,NULL,INTERNET_FLAG_EXISTING_CONNECT);
pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strParam, strParam.GetLength());
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CHAR szBuff[1024];
while (pFile->Read(szBuff, 1024) > 0)
{
printf_s("%1023s", szBuff);
}
GetCompanyListFromCSVResponse(companyListResponseRef, szBuff);
}
else
{
//Do something as server is not sending response as expected.
}
delete pFile;
delete pServer;
}
catch (CInternetException* pEx)
{
//catch errors from WinInet
TCHAR pszError[64];
pEx->GetErrorMessage(pszError, 64);
_tprintf_s(_T("%63s"), pszError);
}
session.Close();
return false;
}
示例11: GetPageDirect
CString GetPageDirect(CString rAddress)
{
CString szResult;
DWORD dwRet = 0; // HTTP返回码
CString strServerName, strObject;
DWORD dwSvrType;
INTERNET_PORT nPort;
const TCHAR szHeaders[] = _T("Accept: text/*\r\nUser-Agent: CInternetThread\r\n");
AfxParseURL(rAddress, dwSvrType, strServerName, strObject, nPort);
CInternetSession session("MySessionDirect");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try
{
pServer = session.GetHttpConnection(strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();
pFile->QueryInfoStatusCode(dwRet);
if (dwRet < 400)
{
char szBuff[1024];
UINT nRead = pFile->Read(szBuff, 1023);
while (nRead > 0)
{
szBuff[nRead] = '\0';
szResult.Append(szBuff);
nRead = pFile->Read(szBuff, 1023);
}
}
delete pFile;
delete pServer;
}
catch (CInternetException* pEx)
{
//uiResult = 0;
}
session.Close();
return szResult;
}
示例12: _tmain
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
CInternetSession ses;
CHttpConnection * con;
CHttpFile * file1=NULL;
INTERNET_PORT port=80;
const bufmax=10000;
char buf[bufmax];
int rec;
try
{
//соединение с Web-сервером
con=ses.GetHttpConnection("localhost/P-Lib",port);
//определяем запрос
file1=con->OpenRequest(1, "index.htm");
//послать запрос
file1->SendRequest();
do
{
//читаем порцию или всю
rec=file1->Read(buf,bufmax-1);
buf[rec]='\0';
printf("%s",buf);
}while(rec>0);
}
catch(CInternetException *pe)
{
printf("Error!\n");
return -1;
}
con->Close();
delete file1;
}
return nRetCode;
}
示例13: GetDlgItemText
void Conference::OnBnClickedConfsubmit()
{
std::string header = "/oneworld/conf_create?api_token=";
header+=((CmicrosipDlg*)GetParent())->getToken();
header+="&pin=";
CString pinNum;
GetDlgItemText(IDC_CONFPIN,pinNum);
header+=(CT2CA)pinNum;
header+="&length=0";
CInternetSession session;
CHttpConnection *pConnection = session.GetHttpConnection(_T("89.163.142.253"));
char result[500];
CString request(header.c_str());
CHttpFile *pFile = pConnection->OpenRequest(1,request);
if(!pFile->SendRequest())
return;
pFile->Read((void*)result,500);
char* status = strchr(result,']'); //checking if data is receive and is parseable
char* eom = strchr(result,'}');
#ifdef _DEBUG
_cprintf("Size: %p, %p, %d\n",result, status, (status-result));
#endif
if(status==NULL)
result[eom-result+1]='\0';
else if(status - result < 498)
result[status - result +2]='\0';
#ifdef _DEBUG
_cprintf("Result: %s\n",result);
#endif
cJSON *root = cJSON_Parse(result);
cJSON *success = cJSON_GetObjectItem(root,"success");
#ifdef _DEBUG
_cprintf("Success: %s\n",success->valuestring);
#endif
LoadList();
}
示例14: GetHTTPData
int GetHTTPData(const char * url, unsigned short **body, string referer, bool b_post, string post_data)
{
CInternetSession session("Azereus 2.2.0.2");
//DWORD dwValue;
//session.QueryOption(INTERNET_OPTION_CONNECT_TIMEOUT, dwValue);
//TRACE("timeout: %d\n", dwValue );
session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 10*1000);
CHttpConnection * pServer = NULL;
CHttpFile* pFile = NULL;
bool bProgressMode = false;
bool bStripMode = false;
bool isGzipped = false;
string line = "";
int size = 0;
unsigned short * buf = *body;
try {
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
if (!AfxParseURL(url, dwServiceType, strServerName, strObject, nPort) ||
dwServiceType != INTERNET_SERVICE_HTTP)
{
//TRACE("Error: can only use URLs beginning with http://\n");
//TRACE("URL: '%s'\n", url);
line = "request failed - can only use URLs beginning with http://";
}
if (bProgressMode)
{
TRACE( _T("Opening Internet..."));
VERIFY(session.EnableStatusCallback(TRUE));
}
pServer = session.GetHttpConnection(strServerName, INTERNET_FLAG_DONT_CACHE, nPort);
string file = url;
int file_start = -1;
if(file.length() > 8) {
file_start = (int)file.find("//");
file_start = (int)file.find("/", file_start+2);
}
if(file_start > 0) file = file.substr(file_start);
else file = "";
if(!b_post) {
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,file.c_str(), referer.c_str());
string header = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
header += "Accept-Language: en-us,en;q=0.5\n\r";
header += "Accept-Encoding: gzip\r\n";
header += "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n\r";
pFile->SendRequest(header.c_str(),(DWORD)header.length());
}
else {
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, file.c_str(), referer.c_str());
string header = "Content-Type: application/x-www-form-urlencoded\n\r";
pFile->SendRequest(header.c_str(),(DWORD)header.length(),(LPVOID)post_data.c_str(), (DWORD)post_data.length() );
}
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
// if access was denied, prompt the user for the password
if (dwRet == HTTP_STATUS_DENIED)
{
DWORD dwPrompt;
dwPrompt = pFile->ErrorDlg(NULL, ERROR_INTERNET_INCORRECT_PASSWORD,
FLAGS_ERROR_UI_FLAGS_GENERATE_DATA | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, NULL);
// if the user cancelled the diaTRACE, bail out
if (dwPrompt != ERROR_INTERNET_FORCE_RETRY)
{
TRACE(_T("Access denied: Invalid password\n"));
line = "request failed - Access denied: Invalid password";
}
pFile->SendRequest();
pFile->QueryInfoStatusCode(dwRet);
}
CString strNewLocation;
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strNewLocation);
// were we redirected?
// these response status codes come from WININET.H
if (dwRet == HTTP_STATUS_MOVED ||
dwRet == HTTP_STATUS_REDIRECT ||
dwRet == HTTP_STATUS_REDIRECT_METHOD)
{
CString strNewLocation;
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strNewLocation);
int nPlace = strNewLocation.Find(_T("Location: "));
if (nPlace == -1)
{
//.........这里部分代码省略.........
示例15: ODS
int CHttpRequest::ConnectUrl(TCHAR *sUrl, TCHAR *sReturn, long *lVersion, int *Count)
{
ODS(_T("XFILTER.EXE: GetFromUrl Begin... \n"));
if(sUrl == NULL)
return XERR_INVALID_PARAMETER;
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
if (!AfxParseURL(sUrl, dwServiceType, strServerName, strObject, nPort) ||
dwServiceType != INTERNET_SERVICE_HTTP)
{
ODS(_T("XFILTER.EXE: Internet Invalid Url ..."));
return XERR_INTERNET_URL_ERROR;
}
CInternetSession session(GUI_APP_CLASS_NAME);
CHttpConnection *pServer = NULL;
CHttpFile *pFile = NULL;
int iRet = XERR_SUCCESS;
m_IsConnecting = TRUE;
try
{
pServer = session.GetHttpConnection(strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet >= 400 && dwRet <= 499)
{
ODS(_T("XFILTER.EXE: Internet Request Error ..."));
iRet = XERR_INTERNET_REQUEST_ERROR;
}
else if(dwRet >= 500 && dwRet <= 599)
{
ODS(_T("XFILTER.EXE: Internet Server Error ..."));
iRet = XERR_INTERNET_SERVER_ERROR;
}
else if(sReturn != NULL)
{
pFile->ReadString(sReturn, MAX_NET_COMMAND_LENTH - 1);
ODS(sReturn);
CString tmpStr = sReturn;
long lVer = atol(tmpStr.Left(MAX_NET_COMMAND_VERSION_LENTH));
if(lVer > *lVersion)
{
*lVersion = lVer;
int i = 1;
while (i < MAX_NET_COMMAND
&& pFile->ReadString((sReturn + MAX_NET_COMMAND_LENTH * i), MAX_NET_COMMAND_LENTH - 1))
{
ODS(sReturn + i * MAX_NET_COMMAND_LENTH);
i ++;
}
*Count = i;
}
else
{
*Count = 1;
}
}
else
{
CString sRet;
pFile->ReadString(sRet);
if(sRet.GetAt(0) != '1')
iRet = XERR_INTERNET_REG_ERROR;
ODS2(_T("XFILTER.EXE: Internet User Register Return Value "),sRet);
}
pFile->Close();
pServer->Close();
}
catch(CInternetException* pEx)
{
pEx->Delete();
iRet = XERR_INTERNET_CONNECT_ERROR;
ODS(_T("XFILTER.EXE: GetFromUrl XERR_INTERNET_CONNECT_ERROR... "));
}
if (pFile != NULL)
delete pFile;
if (pServer != NULL)
delete pServer;
session.Close();
m_IsConnecting = FALSE;
//.........这里部分代码省略.........