string CWRequest::GetURL(string sParams, bool bRelative, bool bURLEncode) { if(sParams == "") return GetURL(NULL, bRelative, bURLEncode); CWStringList params; params.SetText(sParams); return GetURL(¶ms, bRelative, bURLEncode); }
btData * MiniNovaParser::GetList() { string data = ""; btData * list = NULL; data = GetData("http://mininova.org/yesterday/", GetURL()); list = Parse(data); data = GetData(GetURL()); list = Parse(data); return list; }
//---------------------------------------------------------------------------- // STDMETHODIMP CAnchoBackgroundAPI::startBackgroundWindow(BSTR bsPartialURL) { // it's safe to call this method multiple times, anyhow the window // will be created only once if (m_BackgroundWindow) { return S_OK; } CStringW sURL(bsPartialURL); if (!GetURL(sURL)) { return E_FAIL; } // get the main api module and inject it into the background page CComPtr<IMagpieModuleRestricted> mainModule; IF_FAILED_RET(m_Magpie->GetModuleObject((LPOLESTR)s_AnchoMainAPIModuleID, &mainModule)); CComPtr<IDispatch> mainModuleExports; IF_FAILED_RET(mainModule->GetExportsObject(&mainModuleExports)); CComVariant vt; IF_FAILED_RET(mainModuleExports.GetPropertyByName(s_AnchoBackgroundPageAPIName, &vt)); if (vt.vt != VT_DISPATCH) { return E_FAIL; } IF_FAILED_RET(CBackgroundWindow::CreateBackgroundWindow(vt.pdispVal, sURL, &m_BackgroundWindow.p)); return S_OK; }
bool wxCurlFTP::Rename(const wxString& szRemoteLocName, const wxString& szRemoteFile /*= wxEmptyString*/) { if(m_pCURL) { SetCurlHandleToDefaults(szRemoteFile); wxString url(GetURL().c_str(), wxConvUTF8); m_szCurrFullPath = url.BeforeLast('/'); m_szCurrFullPath += wxS("/"); m_szCurrFilename = url.AfterLast('/'); if(m_szCurrFilename.IsEmpty()) return false; AppendPostQuote(wxS("RNFR ") + m_szCurrFilename, true); AppendPostQuote(wxS("RNTO ") + szRemoteLocName); SetCurlHandleQuoteOpts(); SetOpt(CURLOPT_NOBODY, TRUE); if(Perform()) { ResetAllQuoteLists(); return ((m_iResponseCode > 199) && (m_iResponseCode < 300)); } ResetAllQuoteLists(); } return false; }
bool wxCurlFTP::RmDir(const wxString& szRemoteLoc /*= wxEmptyString*/) { if(m_pCURL) { wxString str(szRemoteLoc); if(str.Last() != wxS('/')) str += wxS("/"); SetCurlHandleToDefaults(str); wxString url(GetURL().c_str(), wxConvUTF8); m_szCurrFullPath = url.Left(url.Len() - 1).BeforeLast(wxS('/')); m_szCurrFullPath += wxS("/"); m_szCurrFilename = url.Left(url.Len() - 1).AfterLast(wxS('/')); if(m_szCurrFilename.IsEmpty()) return false; AppendPostQuote(wxS("RMD ") + m_szCurrFilename, true); SetCurlHandleQuoteOpts(); SetOpt(CURLOPT_NOBODY, TRUE); if(Perform()) { ResetAllQuoteLists(); return ((m_iResponseCode > 199) && (m_iResponseCode < 300)); } ResetAllQuoteLists(); } return false; }
bool SFB::FileInputSource::_Open(CFErrorRef *error) { UInt8 buf [PATH_MAX]; Boolean success = CFURLGetFileSystemRepresentation(GetURL(), FALSE, buf, PATH_MAX); if(!success) { if(error) *error = CFErrorCreate(kCFAllocatorDefault, kCFErrorDomainPOSIX, EIO, nullptr); return false; } mFile = unique_FILE_ptr(std::fopen((const char *)buf, "r"), std::fclose); if(!mFile) { if(error) *error = CFErrorCreate(kCFAllocatorDefault, kCFErrorDomainPOSIX, errno, nullptr); return false; } if(-1 == stat((const char *)buf, &mFilestats)) { if(error) *error = CFErrorCreate(kCFAllocatorDefault, kCFErrorDomainPOSIX, errno, nullptr); mFile.reset(); return false; } return true; }
void FCrashUpload::PostReportComplete() { if (PauseState == EUploadState::PostingReportComplete) { // Wait for confirmation SetCurrentState(EUploadState::WaitingToPostReportComplete); return; } AssignReportIdToPostDataBuffer(); auto Request = CreateHttpRequest(); Request->SetVerb( TEXT( "POST" ) ); Request->SetURL(UrlPrefix / TEXT("UploadComplete")); Request->SetHeader( TEXT( "Content-Type" ), TEXT( "text/plain; charset=us-ascii" ) ); Request->SetContent(PostData); UE_LOG( CrashReportClientLog, Log, TEXT( "Sending HTTP request: %s" ), *Request->GetURL() ); if (Request->ProcessRequest()) { SetCurrentState(EUploadState::PostingReportComplete); } else { CheckPendingReportsForFilesToUpload(); } }
OP_STATUS SpeedDialData::GenerateIDIfNeeded(BOOL force, BOOL use_hash, INT32 position) { // generate a unique id if(force || GetUniqueID().IsEmpty()) { if(use_hash && position > 0) { // Generate a hash based on the position and url, only call on upgrade from < 11.10 // See https://ssl.opera.com:8008/developerwiki/Opera_Link/Speeddial_2.0#General_notes OpString8 str8, url, md5; RETURN_IF_ERROR(url.SetUTF8FromUTF16(GetURL())); RETURN_IF_ERROR(str8.AppendFormat("%d%s", position, url.CStr())); RETURN_IF_ERROR(OpMisc::CalculateMD5Checksum(str8.CStr(), str8.Length(), md5)); md5.MakeUpper(); RETURN_IF_ERROR(m_unique_id.Set(md5.CStr())); } else { // generate a default unique ID RETURN_IF_ERROR(StringUtils::GenerateClientID(m_unique_id)); } } return OpStatus::OK; }
/// /// @brief 드래그 앤 드롭으로 하는 파일 첨부 제어 /// UINT WINAPI DragQueryFileACallback( _In_ HDROP hDrop, _In_ UINT iFile, _Out_ LPSTR lpszFile, UINT cch ) { _TRACE(L""); CString strURL = GetURL(); UINT uRet = 0; /// 파일 첨부 차단 if(TRUE == pRule->IsBlockAttachFile()) { /// 파일 첨부 허가 URL 검사 if(TRUE == SearchStringFromFile(ALLOW_ATTACH_FILE_URL_TXT, strURL)) uRet = DragQueryFileANext(hDrop, iFile, lpszFile, cch); else { AfxMessageBox(L"Mini-DLP에 의해 파일 첨부가 차단됩니다."); return 0; } } else uRet = DragQueryFileANext(hDrop, iFile, lpszFile, cch); /// 첨부 파일 로그를 남김 if(TRUE == pRule->IsLoggingMail() && TRUE == pRule->IsLoggingAttachFile()) if(NULL != lpszFile) MakeLogFile(LOG_WEB_FILE, (CString)lpszFile); return uRet; };
NS_IMETHODIMP nsPluginStreamListenerPeer::OnDataAvailable( nsIRequest* request, nsIInputStream* aIStream, uint64_t sourceOffset, uint32_t aLength) { if (mRequests.IndexOfObject(request) == -1) { MOZ_ASSERT(false, "Received OnDataAvailable for untracked request."); return NS_ERROR_UNEXPECTED; } if (mRequestFailed) return NS_ERROR_FAILURE; nsresult rv = NS_OK; if (!mPStreamListener) return NS_ERROR_FAILURE; const char* url = nullptr; GetURL(&url); PLUGIN_LOG(PLUGIN_LOG_NOISY, ("nsPluginStreamListenerPeer::OnDataAvailable this=%p request=%p, " "offset=%" PRIu64 ", length=%u, url=%s\n", this, request, sourceOffset, aLength, url ? url : "no url set")); nsCOMPtr<nsIInputStream> stream = aIStream; rv = mPStreamListener->OnDataAvailable(this, stream, aLength); // if a plugin returns an error, the peer must kill the stream // else the stream and PluginStreamListener leak if (NS_FAILED(rv)) { request->Cancel(rv); } return rv; }
void CAddressBookDialog::Load(LPCTSTR lpszURL) { if (!::IsWindow(m_hWnd)) return; CString szURL = GetURL(); if (szURL != lpszURL) SetURL(lpszURL, TRUE/*bNavigate*/); }
std::string CefControlBase::GetUTF8URL() { if (browser_handler_.get() && browser_handler_->GetBrowser().get()) { return nbase::UTF16ToUTF8(std::wstring(GetURL().c_str())); } return CefString(); }
void FHttpRequestWinInet::CancelRequest() { UE_LOG(LogHttp, Log, TEXT("Canceling Http request. %p url=%s"), this, *GetURL()); // force finish/cleanup of request // note: will still call completion delegates FinishedRequest(); }
int CEasyPDFCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (COleControl::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 GetURL(); return 0; }
std::pair<size_t, size_t> CRepositoryBrowserSelection::FindURL (const CTSVNPath& url) const { for (size_t i = 0, repoCount = GetRepositoryCount(); i < repoCount; ++i) for (size_t k = 0, pathCount = GetPathCount (i); k < pathCount; ++k) if (GetURL (i, k).IsEquivalentTo (url)) return std::make_pair (i, k); return std::pair<size_t, size_t>((size_t)-1, (size_t)-1); }
bool FHttpRequestWinInet::ProcessRequest() { bool bStarted = false; // Disabled http request processing if (!FHttpModule::Get().IsHttpEnabled()) { UE_LOG(LogHttp, Verbose, TEXT("Http disabled. Skipping request. url=%s"), *GetURL()); } // Prevent overlapped requests using the same instance else if (CompletionStatus == EHttpRequestStatus::Processing) { UE_LOG(LogHttp, Warning, TEXT("ProcessRequest failed. Still processing last request.")); } // Make sure Internet connection has been setup else if (!FWinInetConnection::Get().IsConnectionValid() && !FWinInetConnection::Get().InitConnection()) { UE_LOG(LogHttp, Warning, TEXT("ProcessRequest failed. Could not initialize Internet connection.")); } // Nothing to do without a valid URL else if (RequestURL.GetURL().IsEmpty()) { UE_LOG(LogHttp, Warning, TEXT("ProcessRequest failed. No URL was specified.")); } // Make sure the URL is parsed correctly with a valid HTTP scheme else if (RequestURL.GetURLComponents().nScheme != INTERNET_SCHEME_HTTP && RequestURL.GetURLComponents().nScheme != INTERNET_SCHEME_HTTPS) { UE_LOG(LogHttp, Warning, TEXT("ProcessRequest failed. URL '%s' is not a valid HTTP request. %p"), *RequestURL.GetURL(), this); } else { // Mark as in-flight to prevent overlapped requests using the same object CompletionStatus = EHttpRequestStatus::Processing; // Response object to handle data that comes back after starting this request Response = MakeShareable(new FHttpResponseWinInet(*this)); // Add to global list while being processed so that the ref counted request does not get deleted FHttpModule::Get().GetHttpManager().AddRequest(SharedThis(this)); // Try to start the connection and send the Http request bStarted = StartRequest(); } if (!bStarted) { // No response since connection failed Response = NULL; // Cleanup and call delegate FinishedRequest(); } // Successfully started the request return bStarted; }
btData * MyBittorrentParser::GetList() { string data = ""; btData * list = NULL; data = GetData(GetURL()); list = Parse(data); return list; }
void wxHyperlinkCtrlBase::SendEvent() { wxString url = GetURL(); wxHyperlinkEvent linkEvent(this, GetId(), url); if (!GetEventHandler()->ProcessEvent(linkEvent)) // was the event skipped ? { if (!wxLaunchDefaultBrowser(url)) { wxLogWarning(wxT("Could not launch the default browser with url '%s' !"), url.c_str()); } } }
//SOCKET 数据读取////请求游戏全局参数 bool CCenterServerManage::OnSocketRead(NetMessageHead * pNetHead, void * pData, UINT uSize, ULONG uAccessIP, UINT uIndex, DWORD dwHandleID) { if (pNetHead->bMainID==MDM_GP_REQURE_GAME_PARA) ////请求游戏全局参数 { if (0 == uSize) { GetURL(NULL); } else { char * pBuf = (char*)pData; GetURL(pBuf); } RandAServer(); m_TCPSocket.SendData(uIndex,&m_msgSendToClient,sizeof(CenterServerMsg), MDM_GP_REQURE_GAME_PARA,0,0,0); return true; } return false; }
void WebExtensionPolicy::GetURL(const nsAString& aPath, nsAString& aResult, ErrorResult& aRv) const { auto result = GetURL(aPath); if (result.isOk()) { aResult = result.unwrap(); } else { aRv.Throw(result.unwrapErr()); } }
void wxHyperlinkCtrl::SetLabel(const wxString &label) { if ( !HasNativeHyperlinkCtrl() ) { wxGenericHyperlinkCtrl::SetLabel( label ); return; } m_labelOrig = label; wxWindow::SetLabel( GetLabelForSysLink(label, GetURL()) ); InvalidateBestSize(); }
Falcon::Falcon(const std::string& ip) { _ip = ip; _http.SetMethod("GET"); _connected = _http.Connect(_ip); if (_connected) { std::string versionxml = GetURL("/status.xml"); std::string version = GetURL("/index.htm"); if (versionxml != "") { static wxRegEx versionregex("(\\<v\\>)([0-9]+\\.[0-9]+)\\<\\/v\\>", wxRE_ADVANCED | wxRE_NEWLINE); if (versionregex.Matches(wxString(versionxml))) { _version = versionregex.GetMatch(wxString(versionxml), 2).ToStdString(); } } else { //<title>F4V2 - v1.10</title> static wxRegEx versionregex("(title.*?v)([0-9]+\\.[0-9]+)\\<\\/title\\>", wxRE_ADVANCED | wxRE_NEWLINE); if (versionregex.Matches(wxString(version))) { _version = versionregex.GetMatch(wxString(version), 2).ToStdString(); } } static wxRegEx modelregex("(SW Version:.*?\\>)(F[0-9]+V[0-9]+)", wxRE_ADVANCED); if (modelregex.Matches(wxString(version))) { _model = modelregex.GetMatch(wxString(version), 2).ToStdString(); } } else { static log4cpp::Category &logger_base = log4cpp::Category::getInstance(std::string("log_base")); logger_base.error("Error connecting to falcon controller on %s.", (const char *)_ip.c_str()); } }
void wxHyperlinkCtrl::SetURL(const wxString &url) { if ( !HasNativeHyperlinkCtrl() ) { wxGenericHyperlinkCtrl::SetURL( url ); return; } if ( GetURL() != url ) SetVisited( false ); wxGenericHyperlinkCtrl::SetURL( url ); wxWindow::SetLabel( GetLabelForSysLink(m_labelOrig, url) ); }
void WebAddressDlg::SetDialogChangedState() { //If the dialog is still in its initial state... if (fDialogIsInInitialState) { //Then we need to change some things //First, let's find the state of the Web Address attributes applied to the //selection WebCommonAttributeResult aasApplied=FindCommonWebAttribute(); //If anything at all is selected if (aasApplied!=WCA_NOSELECTION) { //Then we need to ungrey the Add/Change button EnableAdd(TRUE); //We also need to clear any intermediate values from the dialog //If the URL field says <MANY>, clear that field if (GetURL()==String_256(_R(IDS_WEBADDRESSDLG_MANY))) ShowURL(); //If the Frame field says <MANY>, put "self" into that field if (GetFrame()==String_256(_R(IDS_WEBADDRESSDLG_MANY))) ShowFrame(String_256(_R(IDS_WEBADDRESS_COMBO_SELF))); //If the clickable area is indeterminate, show the //recommended value for the selection in the radio buttons if (GetClickableArea()==2) ShowClickableArea(SelectionConsistsOfText()); } //If there is no Web Address on the selection, tell the user //so if (aasApplied==WCA_DEFAULT) ShowWebAddressOnSelection(FALSE); //If there is any sort of Web Address on the selection, tell the //user if (aasApplied==WCA_SINGLE || aasApplied==WCA_MANY) ShowWebAddressOnSelection(TRUE); } //The dialog is no longer in its initial state fDialogIsInInitialState=FALSE; }
bool FCrashUpload::SendCheckReportRequest() { FString XMLString; auto Request = CreateHttpRequest(); if (State == EUploadState::CheckingReport) { AssignReportIdToPostDataBuffer(); Request->SetURL(UrlPrefix / TEXT("CheckReport")); Request->SetHeader(TEXT("Content-Type"), TEXT("text/plain; charset=us-ascii")); UE_LOG( CrashReportClientLog, Log, TEXT( "Sending HTTP request: %s" ), *Request->GetURL() ); } else { // This part is Windows-specific on the server ErrorReport.LoadWindowsReportXmlFile( XMLString ); // Convert the XMLString into the UTF-8. FTCHARToUTF8 Converter( (const TCHAR*)*XMLString, XMLString.Len() ); const int32 Length = Converter.Length(); PostData.Reset( Length ); PostData.AddUninitialized( Length ); CopyAssignItems( (ANSICHAR*)PostData.GetData(), Converter.Get(), Length ); Request->SetURL(UrlPrefix / TEXT("CheckReportDetail")); Request->SetHeader(TEXT("Content-Type"), TEXT("text/plain; charset=utf-8")); UE_LOG( CrashReportClientLog, Log, TEXT( "Sending HTTP request: %s" ), *Request->GetURL() ); } UE_LOG( CrashReportClientLog, Log, TEXT( "PostData Num: %i" ), PostData.Num() ); Request->SetVerb(TEXT("POST")); Request->SetContent(PostData); return Request->ProcessRequest(); }
/// /// @brief 파일 첨부 DLG 제어 /// BOOL WINAPI GetOpenFileNameWCallback( _Inout_ LPOPENFILENAMEW lpofn ) { _TRACE(L""); CString strURL = GetURL(); BOOL bRet = FALSE; /// 파일 첨부 차단 if(TRUE == pRule->IsBlockAttachFile()) { /// 파일 첨부 허가 URL 검사 if(TRUE == SearchStringFromFile(ALLOW_ATTACH_FILE_URL_TXT, strURL)) bRet = GetOpenFileNameWNext(lpofn); else { AfxMessageBox(L"Mini-DLP에 의해 파일 첨부가 차단됩니다."); return FALSE; } } else bRet = GetOpenFileNameWNext(lpofn); /// 첨부 파일 로그를 남김 if(TRUE == pRule->IsLoggingMail() && TRUE == pRule->IsLoggingAttachFile()) { if(NULL != *lpofn->lpstrFile) { if(FALSE == PathIsDirectoryW(lpofn->lpstrFile)) MakeLogFile(LOG_WEB_FILE, lpofn->lpstrFile); else { CStringArray strArr; /// 포인터 연산을 위해 저장 LPCWSTR lpTemp = lpofn->lpstrFile; while(TRUE) { lpTemp += wcslen(lpTemp) + 1; if(NULL != *lpTemp) MakeLogFile(LOG_WEB_FILE,(CString)lpofn->lpstrFile + L"\\" + lpTemp); else break; } } } } return bRet; };
VError VFolder::GetRelativeURL(VFolder* inBaseFolder, VString& outURL, bool inEncoded) { VString folderURL; VError err = GetURL(outURL, inEncoded); if (inBaseFolder != NULL) { inBaseFolder->GetURL(folderURL, inEncoded); if (outURL.BeginsWith(folderURL)) { outURL.Remove(1, folderURL.GetLength()); } } return err; }
void CCenterServerManage::GetURL(char *strKey) { CBcfFile f(CBcfFile::GetAppPath() + "BZGameGate.bcf"); CString strValue; if (NULL == strKey) { strValue = f.GetKeyVal(_T("GateServer"),_T("RoomRollWords"),_T("欢迎来到泊众棋牌游游戏中心!"));///< 客户端滚动条广告地址 strncpy(m_msgSendToClient.m_strRoomRollADDR,strValue,sizeof(m_msgSendToClient.m_strRoomRollADDR)-1); m_msgSendToClient.m_strRoomRollADDR[sizeof(m_msgSendToClient.m_strRoomRollADDR)-1] = '\0'; strValue = f.GetKeyVal(_T("GateServer"),_T("WebHelpURL"),_T(""));///< 帮助页WEB地址 strncpy(m_msgSendToClient.m_strHelpADDR,strValue,sizeof(m_msgSendToClient.m_strHelpADDR)-1); m_msgSendToClient.m_strHelpADDR[sizeof(m_msgSendToClient.m_strHelpADDR)-1] = '\0'; strValue = f.GetKeyVal(_T("GateServer"),_T("WebHomeURL"),_T(""));///< 主页WEB地址 strncpy(m_msgSendToClient.m_strHomeADDR,strValue,sizeof(m_msgSendToClient.m_strHomeADDR)-1); m_msgSendToClient.m_strHomeADDR[sizeof(m_msgSendToClient.m_strHomeADDR)-1] = '\0'; strValue = f.GetKeyVal(_T("GateServer"),_T("WebRootURL"),_T(""));///< 网站根路径 strncpy(m_msgSendToClient.m_strWebRootADDR,strValue,sizeof(m_msgSendToClient.m_strWebRootADDR)-1); m_msgSendToClient.m_strWebRootADDR[sizeof(m_msgSendToClient.m_strWebRootADDR)-1] = '\0'; } else { strValue = f.GetKeyVal(_T("WebHomeURL"),strKey,_T(""));///< 主页WEB地址 if (strValue.IsEmpty()) { GetURL(NULL); return; } strncpy(m_msgSendToClient.m_strHomeADDR,strValue,sizeof(m_msgSendToClient.m_strHomeADDR)-1); m_msgSendToClient.m_strHomeADDR[sizeof(m_msgSendToClient.m_strHomeADDR)-1] = '\0'; strValue = f.GetKeyVal(_T("RoomRollWords"),strKey,_T(""));///< 客户端滚动条广告地址 strncpy(m_msgSendToClient.m_strRoomRollADDR,strValue,sizeof(m_msgSendToClient.m_strRoomRollADDR)-1); m_msgSendToClient.m_strRoomRollADDR[sizeof(m_msgSendToClient.m_strRoomRollADDR)-1] = '\0'; strValue = f.GetKeyVal(_T("WebHelpURL"),strKey,_T(""));///< 帮助页WEB地址 strncpy(m_msgSendToClient.m_strHelpADDR,strValue,sizeof(m_msgSendToClient.m_strHelpADDR)-1); m_msgSendToClient.m_strHelpADDR[sizeof(m_msgSendToClient.m_strHelpADDR)-1] = '\0'; strValue = f.GetKeyVal(_T("WebRootURL"),strKey,_T(""));///< 网站根路径 strncpy(m_msgSendToClient.m_strWebRootADDR,strValue,sizeof(m_msgSendToClient.m_strWebRootADDR)-1); m_msgSendToClient.m_strWebRootADDR[sizeof(m_msgSendToClient.m_strWebRootADDR)-1] = '\0'; } }
void CXRefreshBHO::SendInfoAboutPage() { // send message if (!m_Browser) return; if (!m_ConnectionManager.IsConnected()) return; CString title = GetTitle(m_Browser); CString url = GetURL(m_Browser); if (m_LastSentTitle==title && m_LastSentURL==url) return; // prevent duplicit page info messages // send message m_LastSentTitle = title; m_LastSentURL = url; m_ConnectionManager.SendSetPage(title, url); }
/// /// @brief 네이버 메일 ssl 통신 시에 본문 로그를 남김 /// BOOL WINAPI InternetWriteFileCallback( _In_ HINTERNET hFile, _In_ LPCVOID lpBuffer, _In_ DWORD dwNumberOfBytesToWrite, _Out_ LPDWORD lpdwNumberOfBytesWritten ) { _TRACE(L""); CString strURL = GetURL(); if(strURL.GetLength() > 0) strURL.MakeUpper(); if(0 == strURL.Find(L"HTTPS://MAIL.NAVER.COM")) { CStringA strBuf = (LPCSTR)lpBuffer; if(0 == strBuf.Find("senderName=")) { CString strFileName; CStdioFile file; /// 메일 내용을 보내는 패킷이라면 html 파일을 생성한다. _TRACE(L"Mail Contents!"); strFileName = (CString)LOG_WEB_CONTENTS + L"\\" + MakeLogFileName(L"PostPacket.html"); if(FALSE == file.Open(strFileName, CFile::modeCreate | CFile::modeWrite)) _TRACE(L"file open fail! Error Code : %d", GetLastError()); else { /// 패킷에서 주로 쓰이는 구분자 '&'를 html 문법에서 줄바꿈에 해당하는 <br>문자로 바꾼다. strBuf.Replace("&", "<br>"); /// URL 인코딩된 패킷을 디코딩한다. CString strDecode = Unicode_URLDecode((CString)strBuf); /// UTF-8 형식으로 패킷 내용을 html 파일에 저장한다. WriteFileUTF8(file, strDecode); file.Close(); } } } return InternetWriteFileNext( hFile, lpBuffer, dwNumberOfBytesToWrite, lpdwNumberOfBytesWritten ); }