char *RemoteLink( char *config, bool server ) { char *msg; char *end; server=server; end = ValidName( config ); strcpy( NameBuff+1, PREFIX ); if( end == NULL ) { return( TRP_ERR_invalid_server_name_format_is ); } else { if( end == config ) { strcpy( NameBuff+1 + PREFIX_LEN, DefLinkName ); } else { memcpy( NameBuff+1 + PREFIX_LEN, config, end-config ); NameBuff[ end-config+1+PREFIX_LEN ] = '\0'; } } msg = OpenRequest(); NameEnd = NameBuff + strlen( NameBuff ); if( msg != NULL ) return( msg ); if( NameBuff[0] != BIND_ACK ) { #ifdef SERVER return( TRP_ERR_server_name_already_in_use ); #else return( TRP_ERR_server_not_found ); #endif } else { DoOpen( &ConnHdl, CONN_SUFF ); } return( NULL ); }
static HRESULT MakeRequest( __in BURN_USER_EXPERIENCE* pUX, __in_z LPCWSTR wzPackageOrContainerId, __in_z LPCWSTR wzPayloadId, __in HINTERNET hSession, __inout_z LPWSTR* psczSourceUrl, __in_z_opt LPCWSTR wzMethod, __in_z_opt LPCWSTR wzHeaders, __in_z_opt LPCWSTR wzUser, __in_z_opt LPCWSTR wzPassword, __out HINTERNET* phConnect, __out HINTERNET* phUrl, __out BOOL* pfRangeRequestsAccepted ) { HRESULT hr = S_OK; HINTERNET hConnect = NULL; HINTERNET hUrl = NULL; URI_INFO uri = { }; // Try to open the URL. BOOL fRetry; do { fRetry = FALSE; // If the URL was opened close it, so we can reopen it again. ReleaseInternet(hUrl); ReleaseInternet(hConnect); // Open the url. hr = UriCrackEx(*psczSourceUrl, &uri); ExitOnFailure(hr, "Failed to break URL into server and resource parts."); hConnect = ::InternetConnectW(hSession, uri.sczHostName, uri.port, (wzUser && *wzUser) ? wzUser : uri.sczUser, (wzPassword && *wzPassword) ? wzPassword : uri.sczPassword, INTERNET_SCHEME_FTP == uri.scheme ? INTERNET_SERVICE_FTP : INTERNET_SERVICE_HTTP, 0, 0); ExitOnNullWithLastError1(hConnect, hr, "Failed to connect to URL: %ls", *psczSourceUrl); // Best effort set the proxy username and password, if they were provided. if ((wzUser && *wzUser) && (wzPassword && *wzPassword)) { if (::InternetSetOptionW(hConnect, INTERNET_OPTION_PROXY_USERNAME, (LPVOID)wzUser, lstrlenW(wzUser))) { ::InternetSetOptionW(hConnect, INTERNET_OPTION_PROXY_PASSWORD, (LPVOID)wzPassword, lstrlenW(wzPassword)); } } hr = OpenRequest(hConnect, wzMethod, uri.scheme, uri.sczPath, uri.sczQueryString, wzHeaders, &hUrl); ExitOnFailure1(hr, "Failed to open internet URL: %ls", *psczSourceUrl); hr = SendRequest(pUX, wzPackageOrContainerId, wzPayloadId, hUrl, psczSourceUrl, &fRetry, pfRangeRequestsAccepted); ExitOnFailure1(hr, "Failed to send request to URL: %ls", *psczSourceUrl); } while (fRetry); // Okay, we're all ready to start downloading. Update the connection information. *phConnect = hConnect; hConnect = NULL; *phUrl = hUrl; hUrl = NULL; LExit: UriInfoUninitialize(&uri); ReleaseInternet(hUrl); ReleaseInternet(hConnect); return hr; }
CString strData = _T("Some very long data to be POSTed here!"); pServer = session.GetHttpConnection(_T("localhost")); pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("/MFCISAPI/MFCISAPI.dll?")); pFile->SendRequestEx(strData.GetLength()); pFile->WriteString(strData); pFile->EndRequest();