Exemple #1
1
BOOL CAutoUpdateDlg::CheckVersionUpdate(CString& strUpdateURL)
{
	BOOL bHasUpdate = FALSE;

	HRESULT hr = S_OK;
	IXMLHTTPRequestPtr pHttpRequest;
	IDispatchPtr pDispatch;
	MSXML2::IXMLDOMDocumentPtr pXmlDoc;
	MSXML2::IXMLDOMNodeListPtr pList;
	MSXML2::IXMLDOMElementPtr pChild;

	UINT nFileSize;
	CString strFileName, strFileVer, strMD5String;
	LONG lElementCount = 0L;

	try
	{
		hr = pHttpRequest.CreateInstance(TEXT("Msxml2.XMLHTTP.3.0"));
		if( FAILED(hr) )
			_com_issue_error(hr);

		hr = pHttpRequest->open(TEXT("GET"), (_bstr_t)strUpdateURL, false);
		if( FAILED(hr) )
			_com_issue_error(hr);

		hr = pHttpRequest->send();
		if( FAILED(hr) )
			_com_issue_error(hr);

		if (pHttpRequest->Getstatus() != 200)
			throw (0);

		pDispatch = pHttpRequest->GetresponseXML();
		hr = pDispatch->QueryInterface(pXmlDoc.GetIID(), (void**)&pXmlDoc);
		if( FAILED(hr) )
			_com_issue_error(hr);

		pList = pXmlDoc->selectNodes("/manifest/filelist/file");
		lElementCount = pList->Getlength();
		for( LONG i = 0; i < lElementCount; i++ )
		{
			pChild = pList->Getitem(i);
			strFileName = pChild->getAttribute("filename");
			nFileSize = pChild->getAttribute("filesize");
			strFileVer = pChild->getAttribute("fileversion");
			strMD5String = pChild->getAttribute("md5");

			//如果本地文件存在则效验文件,不存在就下载这个文件
			if (PathFileExists(m_strCurrentDir+strFileName))
			{
				//效验文件,如果MD5码不相同则重新下载
				if (CMD5Checksum::GetMD5(m_strCurrentDir+strFileName) != strMD5String)
				{
					m_ulTotalLength += nFileSize;
					m_DownloadMgr.AddTask(strFileName);
					bHasUpdate = TRUE;
				}	
			}
			else
			{
				m_ulTotalLength += nFileSize;
				m_DownloadMgr.AddTask(strFileName);
				bHasUpdate = TRUE;
			}
		}

		return bHasUpdate;
	}
#ifdef _DEBUG
	catch(_com_error& e)
	{
		CString strError;
		strError.Format(_T("Error code:%d\nMessage:%s\nDescrption:%s"), (int)e.WCode(), e.ErrorMessage(), (TCHAR*)e.Description());
		MessageBox(strError, _T("提示"), MB_OK|MB_ICONWARNING);
		return FALSE;
	}
#endif
	catch(...)
	{
		return FALSE;
	}
}
STDMETHODIMP CIssuer::issue(BSTR url, BSTR username, BSTR password, BSTR *result)
{
	// TODO: Add your implementation code here
	int pass1 = 5277;
	int pass2 = 24547;
	char buffer[64];
	WCHAR wbuffer[1024];

	HRESULT hr = 0;

	VARIANT varAsync;
	varAsync.boolVal = FALSE;
	varAsync.vt = VT_BOOL;
	IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL;
	HaspKey key;
	key.login(pass1,pass2);
#if  0
	if(_wcsnicmp(SSL_PROTOCOL,url,wcslen(SSL_PROTOCOL))!=0)
	{	
		MessageBox(NULL,L"必须使用HTTPS来访问",L"警告",MB_OK);
		*result = ::SysAllocString(L"");
		return 0;
	}
#endif
	GIF(pIXMLHTTPRequest.CreateInstance(L"MSXML2.ServerXMLHTTP"));
	GIF(pIXMLHTTPRequest->open(L"POST", url, varAsync));
	GIF(pIXMLHTTPRequest->setRequestHeader(L"User-Agent",L"LoginOcx"));

	wsprintfW(wbuffer,L"%s|%s|%s",username,L"applying",password);
	GIF(pIXMLHTTPRequest->send(_variant_t(wbuffer)));
	BSTR responseText;
	GIF(pIXMLHTTPRequest->get_responseText(&responseText));
	*result = responseText;
	if(wcsncmp(responseText,L"",2)==0){
		*result = ::SysAllocString(L"errorlogin");
		return hr;
	}

	memset(buffer,0,sizeof(buffer));

	::WideCharToMultiByte(0,0,responseText,wcslen(responseText),buffer,
		wcslen(responseText),NULL,NULL);

	if(key.write(buffer, 20)>0)
	{		
		*result = ::SysAllocString(L"ok");
	}else{
		*result = ::SysAllocString(L"");	
	}

	//::MultiByteToWideChar(0,0,buffer,48,wbuffer,64);

	//::SysFreeString(code);
clearup:
	return hr;
}
HRESULT login(BSTR url, BSTR username, BSTR password)
{
	// TODO: Add your implementation code here
	HRESULT hr = 0;
	VARIANT varAsync;
	varAsync.boolVal = FALSE;
	varAsync.vt = VT_BOOL;
	IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL;
	GIF(pIXMLHTTPRequest.CreateInstance(L"MSXML2.ServerXMLHTTP"));
	GIF(pIXMLHTTPRequest->open(L"POST", url, varAsync));
	GIF(pIXMLHTTPRequest->setRequestHeader(L"User-Agent",L"LoginOcx"));
	WCHAR buffer[1024];
	wsprintfW(buffer,L"%s|%s|%s|%s",url,username,L"haspkey",password);
	GIF(pIXMLHTTPRequest->send(_variant_t(buffer)));
	BSTR result;
	GIF(pIXMLHTTPRequest->get_responseText(&result));
	wprintf(L"result = %s\n",result);

clearup:
	return hr;
}
Exemple #4
0
void CNZAddAssignment(long DAILYOPSrecordID, long DRIVERSrecordID, long RUNSrecordID,
      long pieceNumber, long runNumber, long BUSESrecordID, char *pszDateTime)
{
  char szBusNumber[BUSES_NUMBER_LENGTH + 1];
  long blockNumber;
  int  rcode2;

  char szFmtString[2048];

  int year  = atol(pszDateTime);
  int month = atol(&pszDateTime[5]);
  int day   = atol(&pszDateTime[8]);

  CTime date(year, month, day, 0, 0, 0);
//  date += CTimeSpan(1, 0, 0, 0);

  CString sDate = date.Format("%Y-%m-%d");

//
//  Eliminate the time from the date string
//
  pszDateTime[10] = '\0';
//
//  Create the surrounding XML
//
  strcpy(szFmtString, "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
  strcat(szFmtString, "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n");
  strcat(szFmtString, " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\r\n");
  strcat(szFmtString, " xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\r\n");
  strcat(szFmtString, "  <soap12:Body>\r\n");
  strcat(szFmtString, "    <AssignTrips xmlns=\"urn:connexionz-co-nz\">\r\n");
  strcat(szFmtString, "      <strCompanyID>%s</strCompanyID>\r\n");
  strcat(szFmtString, "      <dtTripDate>%s</dtTripDate>\r\n");
  strcat(szFmtString, "      <docTrip>\r\n");
  strcat(szFmtString, "        <Assignments xmlns=\"\">\r\n");
//
//  Get the bus number
//
  BUSESKey0.recordID = BUSESrecordID;
  rcode2 = btrieve(B_GETEQUAL, TMS_BUSES, &BUSES, &BUSESKey0, 0);
  strncpy(szBusNumber, BUSES.number, BUSES_NUMBER_LENGTH);
  trim(szBusNumber, BUSES_NUMBER_LENGTH);
//
//  Get the trip numbers
//
  RUNSKey0.recordID = RUNSrecordID;
  rcode2 = btrieve(B_GETEQUAL, TMS_RUNS, &RUNS, &RUNSKey0, 0);
  TRIPSKey0.recordID = RUNS.start.TRIPSrecordID;
  rcode2 = btrieve(B_GETEQUAL, TMS_TRIPS, &TRIPS, &TRIPSKey0, 0);
  rcode2 = btrieve(B_GETPOSITION, TMS_TRIPS, &TRIPS, &TRIPSKey0, 0);
  rcode2 = btrieve(B_GETDIRECT, TMS_TRIPS, &TRIPS, &TRIPSKey2, 2);
  blockNumber = TRIPS.standard.blockNumber;
  while(rcode2 == 0 &&
        TRIPS.standard.blockNumber == blockNumber)
  {
    sprintf(tempString, "            <Assignment TripNo=\"%ld\" VehicleID=\"%s\" />\r\n", TRIPS.tripNumber, szBusNumber);
    strcat(szFmtString, tempString);
    rcode2 = btrieve(B_GETNEXT, TMS_TRIPS, &TRIPS, &TRIPSKey2, 2);
  }
//  strcat(szFmtString, "<Assignment TripNo=\"540\" VhicleID=\"014\" />\r\n");
//
//  Add in the rest of the XML
//
  strcat(szFmtString, "        </Assignments>\r\n");
  strcat(szFmtString, "      </docTrip>\r\n");
  strcat(szFmtString, "    </AssignTrips>\r\n");
  strcat(szFmtString, "  </soap12:Body>\r\n");
  strcat(szFmtString, "</soap12:Envelope>\r\n");
//
//  Write the passed values into the XML string
//
  CString sXMLString;

  sXMLString.Format(szFmtString, "MVT", sDate);
  
  HANDLE hOutputFile = CreateFile("XML Test.xml", GENERIC_WRITE, 0, NULL,
                       CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  char  szBigString[2048];
  DWORD dwBytesWritten;

  strcpy(szBigString, sXMLString);
  WriteFile(hOutputFile, (LPCVOID *)szBigString, strlen(szBigString), &dwBytesWritten, NULL);
//
//  Initialize the request handler
//
  IXMLHTTPRequestPtr pIXMLHTTPRequest = NULL;
  BSTR bstrString = NULL;
  HRESULT hr;

  hr = pIXMLHTTPRequest.CreateInstance("Msxml2.XMLHTTP.3.0");
//
//  Open the connection with a POST
//
  VARIANT vAsync;
  vAsync.vt = VT_BOOL;
  vAsync.boolVal = FALSE;
	
  VARIANT vUser;
  vUser.vt = VT_BSTR;
  vUser.bstrVal = NULL;

  VARIANT vPassword;
  vPassword.vt = VT_BSTR;
  vPassword.bstrVal = NULL;

  pIXMLHTTPRequest->open("POST ", szPostAddress, vAsync, "", "");
//
//  Send the headers
//
//  Host
//
  pIXMLHTTPRequest->setRequestHeader("Host", szHostAddress);
//
//  Content type
//
  pIXMLHTTPRequest->setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8");
//
//  Content length
//
  CString x;

  x.Format("%d", sXMLString.GetLength());
  pIXMLHTTPRequest->setRequestHeader("Content-Length", x.AllocSysString());
//
//  SOAPAction
//
//  pIXMLHTTPRequest->setRequestHeader("SOAPAction", "\"urn:connexionz-co-nz/AssignTrips\"");
//
//  Send the XML string
//
  VARIANT vRequest;
  vRequest.vt = VT_BSTR;
  vRequest.bstrVal = sXMLString.AllocSysString();

  pIXMLHTTPRequest->send(vRequest);
//
//  Get the response and status
//
  long    lHttpStatus;
  CString sHttpStatusText;

  lHttpStatus = pIXMLHTTPRequest->status;
  sHttpStatusText = (char *)pIXMLHTTPRequest->statusText;

  _bstr_t bsResponse = pIXMLHTTPRequest->responseText;

   char* resultString = _com_util::ConvertBSTRToString(bsResponse);


  WriteFile(hOutputFile, (LPCVOID *)resultString, strlen(resultString), &dwBytesWritten, NULL);
  CloseHandle(hOutputFile);

}