有哪些情景可以让CHttpFile::SendRequest出现卡住不返回? [问题点数:200分]

Bbs6
本版专家分:9987
结帖率 99.2%
Bbs10
本版专家分:125460
Blank
红花 2018年11月 VC/MFC大版内专家分月排行榜第一
2018年10月 VC/MFC大版内专家分月排行榜第一
2018年9月 VC/MFC大版内专家分月排行榜第一
2018年8月 VC/MFC大版内专家分月排行榜第一
2018年5月 VC/MFC大版内专家分月排行榜第一
2018年4月 VC/MFC大版内专家分月排行榜第一
2018年3月 VC/MFC大版内专家分月排行榜第一
2018年2月 VC/MFC大版内专家分月排行榜第一
2018年1月 VC/MFC大版内专家分月排行榜第一
2017年12月 VC/MFC大版内专家分月排行榜第一
2017年11月 VC/MFC大版内专家分月排行榜第一
2017年7月 VC/MFC大版内专家分月排行榜第一
2012年7月 VC/MFC大版内专家分月排行榜第一
Blank
黄花 2018年7月 VC/MFC大版内专家分月排行榜第二
2018年6月 VC/MFC大版内专家分月排行榜第二
2017年9月 VC/MFC大版内专家分月排行榜第二
2017年8月 VC/MFC大版内专家分月排行榜第二
2017年4月 VC/MFC大版内专家分月排行榜第二
2017年3月 VC/MFC大版内专家分月排行榜第二
2017年2月 VC/MFC大版内专家分月排行榜第二
2016年8月 VC/MFC大版内专家分月排行榜第二
2016年7月 VC/MFC大版内专家分月排行榜第二
2016年6月 VC/MFC大版内专家分月排行榜第二
2015年6月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2017年10月 VC/MFC大版内专家分月排行榜第三
2017年6月 VC/MFC大版内专家分月排行榜第三
2017年5月 VC/MFC大版内专家分月排行榜第三
2016年9月 VC/MFC大版内专家分月排行榜第三
2016年4月 VC/MFC大版内专家分月排行榜第三
2015年4月 VC/MFC大版内专家分月排行榜第三
2012年8月 VC/MFC大版内专家分月排行榜第三
Bbs6
本版专家分:9987
其他相关推荐
CHttpFile SendRequest 会卡住
这个 SendRequest 会卡住,到底怎么办的??哪位兄弟遇到过 给个解决方案吧。。。。。。
C++使用CHttpFile实现Http请求
C++使用CHttpFile实现Http请求
CHttpFile的SendRequest不返回,阻塞了!
我用WinInet连接自己的Isapi extension 当isa返回HSE_STATUS_SUCCESS时,SendRequest成功返回,可是当isa返回HSE_STATUS_SUCCESS_AND_KEEP_CON时,SendRequest阻塞。我需要保持连接,所以要返回HSE_STATUS_SUCCESS_AND_KEEP_CON,但是SendRequest阻塞了,后续操作就无法进行了。不知道各位大虾有何高见?
C++ 在使用CHttpFile进行http通信的时候遇到了一个Bug
Bug:信息提示:Unhandled Exception at XXXXX in xxx.exe Access Violation! 在网上找有些说是:内存问题,例如:空指针、越界、指针释放有问题等。 但是我今天遇到这样的错误在MFC工程中,其实在MFC工程中没有这个问题,而是我移植到另外一个工程里面就出现了这个问题。 那么原因是什么呢?  原因就是MFC工程的属性设置问题: 右键工程选
使用CHttpFile上传下载文件(类)
源码: 头文件(HttpFileClient.h) #pragma once   #define  __BUFFER_SIZE 1024 class CHttpFile; class CHttpFileClient { public:  CHttpFileClient(void);  ~CHttpFileClient(void); public:  BOOL UploadF
CHttpFile::SendRequest无法返回,求助!!!
我使用下面的代码,根据情况分析,对方已经收到了相应的数据,可是我的程序却失去了rn响应,只有用 Ctrl+Alt+Del 关闭,请各位大虾帮忙分析一下rn代码如下:rnrn CInternetSession session;rn tryrn rn session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 1000);rn CHttpConnection* pServer = session.GetHttpConnection("192.168.0.223", (INTERNET_PORT)80);rn CHttpFile* pFile = pServer->OpenRequest("POST", "/reset.htm");rn char * pstrHeaders = "Accept: application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\nReferer: http://192.168.0.223/reset.htm\r\nAccept-Language: rnzh-cn,en-us;q=0.5\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98)\r\nHost: 192.168.0.223\r\nContent-Length: 12\r\nConnection: Keep-Alive\r\n";rn char * lpOptional = "RESET=NORMAL\r\n";rn pFile->SendRequest(pstrHeaders, strlen(pstrHeaders), lpOptional, strlen(lpOptional));rn rn catch (CInternetException* pEx)rn rn // catch errors from WinINetrn rn TCHAR szErr[1024];rn pEx->GetErrorMessage(szErr, 1024);rnrn pEx->Delete();rn rn rn
解决通过CHttpFile获取远程图片,图片长度取得不准确的问题
采用CHttpFile和CInternetSession类去获取图片,如下图中红色方框中所示的方式,并不能每次都能获取到正确的远程图片长度,我的测试工控机,就始终不能获取到图片,原因可能是CHttpFile类是直接去获取图片,通过网络获取图片需要时间,因此会造成GetLength()函数不能获取到正确的数据,使用一个循环去等待也没有解决该问题,也许是计算不准确。
CHttpFile::SendRequest问题
void CAutoBuyDlg::OnBnClickedOk()rnrnrn CString strUrl("http://www.baidu.com");rn CString strServer, strObject;rn INTERNET_PORT wPort;rn DWORD dwType;rn AfxParseURL(strUrl,dwType,strServer,strObject,wPort);rn const TCHAR szHeaders[] = _T("Accept:*/*\r\n"); rn m_HttpFile=m_HttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);rn m_HttpFile->AddRequestHeaders(szHeaders);rn m_HttpFile->SendRequest();rn CString tmpBuf;rn while (m_HttpFile->ReadString(tmpBuf))rn rn m_buf += "\r\n";rn m_buf += tmpBuf;rn rnrnrn代码如上,但当执行m_HttpFile->SendRequest()时,就报错,用CInternetException判断了一下,是12005,这里哪里错了啊,望指教。
CHttpFile::SendRequest的问题
问题怎么捕获pHttpFile->SendRequest();(// SetWindowText("正在获取网页"+sURL+"的代码");rn CInternetSession internetSession;rn CHttpConnection* pHttpConnection = NULL;rn CHttpFile* pHttpFile = NULL;rn CString strServer, strObject;rn DWORD dwServiceType = 0;rn DWORD dwHttpRequestFlags = INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT;rn TCHAR szHeaders[] = _T("Accept: text/*\r\nUser-Agent: LCD's Sample Http Client\r\n");rn INTERNET_PORT nPort;rn int nRet = 0;rn rn nRet = AfxParseURL( (LPCTSTR)sURL, dwServiceType, strServer, strObject, nPort );rn if( !nRet || dwServiceType != INTERNET_SERVICE_HTTP )rn rn fileContent.Empty();rn time=CTime::GetCurrentTime();rn strtime=time.Format("%Y %B %d %H:%M:%S");rn ::WritePrivateProfileString("网络日志","时间:"+strtime,"事件:不能保存请求保存 "+sURL+" 上的网页的源代码",m_param.str_SysLog);rn return FALSE;rn rnrn pHttpConnection = internetSession.GetHttpConnection( strServer, nPort );rn pHttpFile = pHttpConnection->OpenRequest( CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags); rn pHttpFile->AddRequestHeaders( szHeaders );rn pHttpFile->SendRequest();// QueryInfoStatusCode( dwRet );rn if( dwRet == HTTP_STATUS_DENIED )rn rn fileContent.Empty();rn rn time=CTime::GetCurrentTime();rn strtime=time.Format("%Y %B %d %H:%M:%S");rn ::WritePrivateProfileString("网络日志","时间:"+strtime,"事件: "+sURL+"连接被拒绝",m_param.str_SysLog);rn return FALSE;rn rnrn CString string, prefix, suffix, path, sCopy, sTemp, strFilePath;rn int iStart = 0, iEnd = 0;rn rn strFilePath = sURL.Left( ( sURL.ReverseFind( '/' ) ) );rn rn fileContent.Empty();rn while( pHttpFile->ReadString( string ) )rn rn fileContent += "\r\n" + string;rn rn pHttpFile->Close();rn pHttpConnection->Close();rn delete pHttpFile;rn delete pHttpConnection;rn //===============================================rn fileContent.MakeLower();rn //===============================================rn if(fileContent.Find(" 404 not found",0)!=-1&&fileContent.Find("was not found on this server.",0)!=-1rn &&fileContent.GetLength(),pos1);rn pos1 +=6;rn pos2 -=pos1;rn fileContent.Delete(pos1,pos2);rn rn rn rn return TRUE;rn
CHttpFile::SendRequest 302重定向
RT...!!写了一个去操作网页的软件.``! 模拟人工发包``! 有个地方``post请求后.返回的是个302重定向..! 当然我用的 CHttpCFile 这个类里的SendRequest成员来处理的..! 网上查过资料..! 这个函数能直接处理重定向跳转``!!直接返回重定向之后的页面rn最后``他返回的是这么一串数据..rnrnrn1f8b0800000000000400edbd07601c499625262f6dca7b7f4af54ad7e074a10880601324d8904010ecc188cde692ec1d69472329ab2a81ca6556655d661640cced9dbcf7de7befbdf7de7befbdf7ba3b9d4e27f7dfff3f5c6664016cf6ce4adac99e2180aac81f3f7e7c1f3f227ee3e4f1effaf4cb9337bfcfcbd374de2ecaf4e5574f9e9f9da41f6ddfbdfbdd7b2777ef3e7df334fdbdbffde68be7e9ee78277d5367cba6688b6a999577ef9ebef828fd68deb6ab4777ef5e5d5d8dafee8dabfae2ee9b5777df01d62e5ed65fb75befcdf1ac9d7d74445de3abf4dda25c369f45e0ec3e7cf8505e97c67936c3cf45de66846bbbdace7fd1bab8fceca3936ad9e6cb76fbcdf52aff289dca5f9f7dd4e6efdabb78fb309dceb3bac9dbcfd6edf9f6c147e95d80298be5dbb4a557b4e5b4693e4ae7757e6e51b918cf8bab6249ff1b4fab051adc9d1559595d8ce9d78fd23a2f3ffba869afcbbc99e779ab60dba22df3a3fff2effd2bffcbbff7afff2ffed43ffe3ffbfbffbcc777e533faf2ae19c3a49a5de3e7acb84ca765d6d0f8db62f5fb13a806634de9f9cfffc6bffb3ffbbbfef8ffea6fff3bffc7bfef8ffb2fffd6bff7bffc7bffc2fffa0ffe23fff33fea6ffacffe9e3fe23ffbbbfea0ffeceffa6bfe8b3fec4ffccfffb23fe3bffc73feb0fffa4ffbb3ffabbff16f246884de25bdcd5019b1cf3e5a65b359b1bcd86eabd5a3fb3bab778702fe71b15caddb74992da8cd45552d896e82c6a45dfefe7b1f296126ebb6c577c5ccb4aa96d3b298be05e09aa83c9e5527eb766febe38fef1c7e945e66e59adefa2fffe2bfe13fff1bfe1ca587c1e9ae19324fc9d16f9cfc3ff1fdaf8a7a020000rnrn返回的数据是我直接从内存里拿出来的`````我试过UTF8``UNICODE``ANSI编码..!! 怎么都不对..!! rnrnrn以下是我的代码..!rn[code=c]rn JQString JQtools;rnrn rn char* chBuff = JQtools.ToAnsi((LPWSTR)(LPCWSTR)Post);rn UINT len = strlen(chBuff);rnrn pFile-> SendRequest(NULL,0,chBuff, len);rn rn pFile->QueryInfoStatusCode(retcode);rnrn if (retcode == HTTP_STATUS_OK)rn rn CString m_strHtml;rn JQString strtools;rn char szBuff[0x10000];rn memset(szBuff,0,0x10000);rnrn UINT outlen = 0;rnrn UINT nRead;rn CString strTmp;rnrnrn while ((nRead = pFile->Read(szBuff,0x9000))>0)rn rn /*for(int i = 0; i < nRead; i++)rn rn if(0x00 == (byte)szBuff[i])rn rn szBuff[i] = 0x20;rn rn */rn strTmp += szBuff;rn memset(szBuff,0,0x10000);rn rn[/code]rnrn另外补充下..!!``单步过 pFile->QueryInfoStatusCode(retcode); retcode 值是200; rnnRead = pFile->Read(szBuff,0x9000))>0; nRead 值是617; 也就是接收到的实际长度rnszBuff 缓冲区里面``我开的是0x10000的数组..!! 返回的就是上面的数据`` ``求大神告知..!rn只有这么多分了..!
CHttpFile::SendRequest()阻塞的问题
以下是我自己编写的类,使用流程大概是这样的:rn[code=c]rnHttpDownload* myDownload = new HttpDownload(m_strURL, m_strSavePath, m_iThreads, this);rnmyDownload->Download(nullptr);rn[/code]rnHttpDownload::Download()内部先调用HtppDownload::GetInfo(),通过发送一个Request获取文件信息,然后再分别创建下载进程:AfxBeginThread(ReceiveData, (LPVOID)myTask);rn在HttpDownload::GetInfo()执行过程中一切正常,但是到了HttpDownload::ReceiveData()问题就来了,所有的线程都阻塞在了"httpFile->SendRequest()"这一行上,一直到抛出异常“操作超时”。rn请教这就究竟是什么原因?rn[code=c]rn//HttpDownload.hrn#pragma oncern#include "TaskConfigFile.h"rn#include "CMultiMachineDownloadDlg.h"rnrnrnclass HttpDownloadrnrnpublic:rn HttpDownload(CString strURL, CString strSavePath, SHORT sThreadsSum, CMultiMachineDownloadDlg* pWnd);rn ~HttpDownload(void);rnrn BOOL Download(TaskConfigFile*);rn BOOL m_Stop;//暂停下载任务rn BOOL m_Finished;//下载完成rn CMultiMachineDownloadDlg* m_pWnd;//主窗口rnrnprivate:rn HttpDownload(const HttpDownload&);rnrn TaskConfigFile* m_pConfigInfo;//配置文件信息rn CString m_strSavePath;//文件保存路径rn CString m_strObject, m_strServer, m_strURL;//strServer用于保存服务器地址,strObject用于保存文件对象名称rn DWORD m_dwServiceType, m_dwStatus;//dwServiceType用于保存服务类型,dwStatus用于保存提交GET请求返回的状态号rn INTERNET_PORT m_nPort;//用于保存服务器端口号rn SHORT m_sThreadsSum;//线程总数rn CWinThread* m_threadsList[10];//同一任务最多支持10个线程同时下载rn CCriticalSection m_cs;//临界区rnrn BOOL GetInfor();//下载前准备,获取文件信息rn static UINT ReceiveData(LPVOID);//开始接收数据rn VOID Release();rn;rn[/code]rn[code=c]rn//HttpDownload.cpprn#include "stdafx.h"rn#include "HttpDownload.h"rn#include "ThreadTask.h"rnrn#define HTTP_STATUS_REQUEST_RANGE_NOT_STATISFIABLE 416 //服务器不支持断点续传rn#define BUFFSIZE 5120 //一次接收5KBrnrnusing std::auto_ptr;rnrnHttpDownload::HttpDownload(CString strURL, CString strSavePath, SHORT sThreadsSum, CMultiMachineDownloadDlg* pWnd): rn m_strURL(strURL), m_strSavePath(strSavePath),m_pConfigInfo(nullptr), m_sThreadsSum(sThreadsSum), m_Stop(FALSE), m_pWnd(pWnd), m_Finished(FALSE)rnrn ::AfxParseURL(m_strURL, m_dwServiceType, m_strServer, m_strObject, m_nPort);rn for(SHORT i = 0; i < sThreadsSum; ++i)rn rn m_threadsList[i] = nullptr;rn rnrnrnHttpDownload::HttpDownload(const HttpDownload& hd)rnrnrnrnHttpDownload::~HttpDownload(void)rnrn Release();rnrnrnVOID HttpDownload::Release()rnrn if(m_pConfigInfo)rn rn delete m_pConfigInfo;rn m_pConfigInfo = nullptr;rn rnrn for(int i =0; i < m_sThreadsSum; ++i)rn rn if(m_threadsList[i])rn delete m_threadsList[i];rn rnrnrnBOOL HttpDownload::GetInfor()rnrn CInternetSession innetSession;rn auto_ptr pHttpFile;rn auto_ptr pHttpConn;rn rn tryrn rn pHttpConn.reset(innetSession.GetHttpConnection(m_strServer, m_nPort));rn pHttpFile.reset(pHttpConn->OpenRequest(CHttpConnection::HTTP_VERB_GET, m_strObject));rn if(!pHttpFile.get())rn rn#ifdef DEBUGrn TRACE("Open request error!\n");rn ::AfxMessageBox(_T("Open request error!\n"));rn#endifrn innetSession.Close();rn return FALSE;rn rnrn CString strRange(_T("Range: bytes=10-\r\n"));//用于判断服务器是否支持断点续传rn if(!pHttpFile->AddRequestHeaders(strRange))rn rn#ifdef DEBUGrn TRACE("AddRequestHeaders() error.\n");rn#endifrn rn if(!pHttpFile->SendRequest())rn rn#ifdef DEBUGrn TRACE("SendRequest()) error.\n");rn#endifrn rn pHttpFile->QueryInfoStatusCode(m_dwStatus);rn if(m_dwStatus >= 200 && m_dwStatus < 300)//请求成功rn rn DWORD dwFileSize;rn pHttpFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, dwFileSize);rn m_pConfigInfo = new TaskConfigFile(m_strURL, m_strSavePath, dwFileSize, m_sThreadsSum);rn m_pConfigInfo->m_strFileName = pHttpFile->GetFileName();rn m_pConfigInfo->m_strSavePath += pHttpFile->GetFileName();rn //Download();rn rn else//单线程rn rn#ifdef DEBUGrn TRACE("Send request error!\n");rn ::AfxMessageBox(_T("服务器不支持断点续传!"));rn#endifrn m_sThreadsSum = 1;//单线程下载rn DWORD dwFileSize;rn pHttpFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, dwFileSize);rn m_pConfigInfo = new TaskConfigFile(m_strURL, m_strSavePath, dwFileSize, m_sThreadsSum);rn m_pConfigInfo->m_strFileName = pHttpFile->GetFileName();rn m_pConfigInfo->m_strSavePath += pHttpFile->GetFileName();rn rn rnrn rn catch(CInternetException* internetEx)rn rn internetEx->ReportError();rn internetEx->Delete();rn innetSession.Close();rn rn catch(CException* e)rn rn e->ReportError();rn e->Delete();rn innetSession.Close();rn rnrn innetSession.Close();rn return TRUE;rnrnrnUINT HttpDownload::ReceiveData(LPVOID pParam)rnrn CHAR* pBuff(nullptr);rn auto_ptr pTaskInfo(static_cast(pParam));rn auto_ptr httpFile;rn CInternetSession session;rn#ifdef DEBUGrn DWORD dwThreadID;rn dwThreadID = ::GetCurrentThreadId();rn#endifrnrn tryrn rn //统一以二进制流传输rn DWORD dwFlags = INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE;rn CString strRange;rn DWORD dwStatus(0);rn ULONGLONG sizeValue(0);//本分块已下载的大小rn pTaskInfo->m_downloadInfor->m_pConfigInfo->m_mapBlockDownloadedSize.Lookup(pTaskInfo->m_blockStart, sizeValue);rn ULONGLONG start(pTaskInfo->m_blockStart + sizeValue);rn ULONGLONG end(pTaskInfo->m_blockStart + pTaskInfo->m_downloadInfor->m_pConfigInfo->m_lBlockSize);rn if(pTaskInfo->m_isLastBlock)rn strRange.Format(_T("Range: bytes=%llu-\r\n"), start);rn else rn strRange.Format(_T("Range: bytes=%llu-%llu\r\n"), start, end);rnrn httpFile.reset(static_cast(session.OpenURL(pTaskInfo->m_downloadInfor->m_pConfigInfo->m_strLink, 1, dwFlags)));rn if(!httpFile->AddRequestHeaders(strRange))rn rn#ifdef DEBUGrn TRACE("AddRequestHeaders() error.\n");rn#endifrn rn if(!httpFile->SendRequest())rn rn#ifdef DEBUGrn TRACE("SendRequest()) error.\n");rn#endifrn rn httpFile->QueryInfoStatusCode(dwStatus);rnrn if(dwStatus >= 200 && dwStatus < 300)//请求成功rn rn CFile downloadFile(pTaskInfo->m_downloadInfor->m_pConfigInfo->m_strSavePath, CFile::modeCreate | CFile::modeWrite | CFile::shareExclusive);rn CFile configFile(pTaskInfo->m_downloadInfor->m_pConfigInfo->m_strSavePath + ".tmp", CFile::modeCreate | CFile::modeWrite| CFile::shareExclusive);rn CArchive ar(&configFile, CArchive::store);rn UINT dwRead(1);rn DWORD dwDownloadStatus;rnrn //downloadFile.SetLength(pTaskInfo->m_downloadInfor->m_pConfigInfo->m_lFileSize);rn downloadFile.Seek(start, CHttpFile::begin);rn pBuff = new CHAR[BUFFSIZE];rn#ifdef DEBUGrn TRACE("Thread %d, starting download......\n", dwThreadID);rn#endifrn while(dwRead && !pTaskInfo->m_downloadInfor->m_Stop)rn rn ::ZeroMemory(pBuff, BUFFSIZE);//清空缓冲区rn dwRead = httpFile->Read(pBuff, BUFFSIZE);rn#ifdef DEBUGrn TRACE("Thread %d, received %llu byte!\n", dwThreadID, dwRead);rn#endifrn pTaskInfo->m_downloadInfor->m_cs.Lock();//进入临界区rn downloadFile.Write(pBuff, dwRead);rn dwDownloadStatus = pTaskInfo->m_downloadInfor->m_pConfigInfo->AddDownloadedSize(pTaskInfo->m_blockStart, sizeValue);//更新已下载的大小rn if(DOWNLOAD_FINISHED == dwDownloadStatus)rn pTaskInfo->m_downloadInfor->m_Finished = TRUE;rn pTaskInfo->m_downloadInfor->m_pConfigInfo->Serialize(ar);//保存文件信息rn pTaskInfo->m_downloadInfor->m_cs.Unlock();//离开临界区rn rnrn#ifdef DEBUGrn TRACE("Thread %d download finished!\n", dwThreadID);rn#endifrn downloadFile.Close();rn configFile.Close();rn rn elsern rn#ifdef DEBUGrn TRACE("Request error in ReceiveData funtion!\n");rn ::AfxMessageBox(_T("fuck!"));rn#endifrn rn rn catch (CMemoryException* e)rn rn e->ReportError();rn e->Delete();rn delete[] pBuff;rn rn catch (CFileException* e)rn rn e->ReportError();rn e->Delete();rn delete[] pBuff;rn rn catch (CException* e)rn rn e->ReportError();rn e->Delete();rn delete[] pBuff;rn rnrn delete[] pBuff;rn if(pTaskInfo->m_downloadInfor->m_Finished == TRUE)rn rn ::PostMessage(pTaskInfo->m_downloadInfor->m_pWnd->m_hWnd, WM_USER_DOWNLOAD_FINISHED, 0, (LPARAM)pTaskInfo->m_downloadInfor);rn rn return 0;rnrnrnBOOL HttpDownload::Download(TaskConfigFile* configInfo)rnrn if(!GetInfor())rn ::AfxMessageBox(_T("无法获取文件信息,请确认下载链接是否有错。"));rn if(configInfo)rn m_pConfigInfo = configInfo;rn POSITION pos = m_pConfigInfo->m_mapBlockDownloadedSize.GetStartPosition();rn for(SHORT i = 0; i < m_sThreadsSum; ++i)rn rn ThreadTask* myTask = new ThreadTask(this);rn m_pConfigInfo->m_mapBlockDownloadedSize.GetNextAssoc(pos, myTask->m_blockStart, myTask->m_blockSize);rn if(i == m_sThreadsSum -1)rn myTask->m_isLastBlock = TRUE;rn m_threadsList[i] = ::AfxBeginThread(ReceiveData, (LPVOID)myTask);rn#ifdef DEBUGrn TRACE("Thread %d start...\n", m_threadsList[i]->m_nThreadID);rn#endifrn rn return TRUE;rnrnrn[/code]
CHttpFile SendRequest,参数???
在http://book.wuxiawu.com/网页中,输入小说名称,比如:近身保镖,进行查询,用sniffer抓到的数据为:rnPOST /modules/article/search.php HTTP/1.1rnAccept: */*rnReferer: http://book.wuxiawu.com/rnAccept-Language: zh-cnrnContent-Type: application/x-www-form-urlencodedrnAccept-Encoding: gzip, deflaternUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)rnHost: book.wuxiawu.comrnContent-Length: 80rnConnection: Keep-AlivernCache-Control: no-cachernCookie: cck_lasttime=1259034080359; cck_count=0rnrnsearchtype=articlename&searchkey=%BD%FC%C9%ED%B1%A3%EF%DA&Submit=+%CB%D1+%CB%F7+rn然后我想获取,查询后的网页数据,这个时候,SendRequest的参数应该怎么设置:rnCString strHttpName="http://www.86zw.com/"; // 需要提交数据的页面rnCString strFormData = "searchtype=articlename&searchkey=%BD%FC%C9%ED%B1%A3%EF%DA&Submit=+%CB%D1+%CB%F7+rn"; // 需要提交的数据rnCInternetSession sess;rnCHttpFile* fileGet;rnCString strHeaders = _T("Content-Type: application/x-www-form-urlencoded"); // 请求头rnDWORD dwStatus;rnDWORD dwBuffLen = sizeof(dwStatus);rnBOOL bSuccess = fileGet->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, &dwStatus, &dwBuffLen);rnif( bSuccess && dwStatus>= 200 &&dwStatusSendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());rn while(fileGet->ReadString(strSentence)) // 读取提交数据后的返回结果rn rn strGetSentence = strGetSentence + strSentence + char(13) + char(10);rn rn AfxMessageBox(strGetSentence); // 显示返回网页内容rnrn疑问:rn这个请求头到底是什么意思,是:("Content-Type: application/x-www-form-urlencoded"); rn还是:/modules/article/search.php HTTP/1.1rnrnPOST /modules/article/search.php HTTP/1.1,这个不是请求头的意思吗?
CHttpFile SendRequest 程序崩溃
在我的机子上运行的很好,但换到别人电脑上就不行了。rn而且可以100%确定是pFile->SendRequest这一句出的问题rnrn现在应该怎么做?rn或者怎么处理异常?
CHttpFile多次SendRequest阻塞
SendRequest rnwhile()rnrnfileGet->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());rnrn]rnstrFormData数据大小变了 在第二次变阻塞了。rnrn如果大小不变,正常。rn为什么
CHttpFile::SendRequest的参数问题?
BOOL SendRequest( CString& strHeaders, LPVOID lpOptional = NULL, DWORD dwOptionalLen = 0 ); rnrn请问strHeaders和lpOptional的格式该如何写?rnrn假设我要发送一个cookie:test=123,一个form数据 name=345
MFC CHttpFile不带缓存读取数据
CInternetSession c ; CHttpFile * p=NULL ; p=(CHttpFile*)c.OpenURL(m_Url.GetBuffer(),1,INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD,NULL,0); //打开一个URL CString str ; CString strinfo= TEXT("");
CHttpFile POST方式提交数据并返回结果
bool PostContent(CString strUrl/*接口地址*/, const CString &amp;amp;strPara/*发送数据*/, CString &amp;amp;strContent/*接口返回数据*/, CString &amp;amp;strDescript/*执行结果描述*/) { try{ strDescript = &quot;提交成功完成!&quot;; ...
CHttpFile方法SendRequest超时设置
当要连接的服务器连不上时,SendRequest会阻塞一会才返回,rn我想让它5秒钟内返回,请问如何设置?
问个关于CHttpFile::Sendrequest()的问题
tryrn m_pHttpFile->SendRequest();rn catch( CInternetException* pCE )rn rn pCE->Delete();rn return ERROR_HTTP_DOWNFILE_SENDREQUEST_FAILED;rn rn得到错误12029rn会是什么原因?
CHttpFile SendRequest 发送数据,问题很严重
1、HTTP头我只加了如下两个:rnpFile -> AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded; charset=UTF-8")); rnpFile -> AddRequestHeaders(_T("Accept: */*"));rn抓包能抓到所有的,但是对方只接收到一部分。rnrn2、如果我想发送ANSI格式的字符流该如何设置HTTP头呢??rn 头设置_T("Content-Type: application/x-www-form-urlencoded; charset=UTF-8")rn 是不是说明发过去的就是UTF8格式的,那我想发送ANSI格式的,如何处理呢?rn
关于CHttpFile SendRequest引起的内存问题?
用VS2010写了一个MFC的程序,向服务器上POST数据,然后将返回的数据保存在文件中。rn如果文件较小的话,没有问题,可以正常使用。但是当文件较大时候,程序就崩溃了。错误类似于:rn[img=http://wenwen.soso.com/p/20101123/20101123122456-1878733282.jpg][/img]rn调试了一下,错误输出的是:rn0x75f6d36f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x04aeec78 处的 CInternetExceptionrnrn异常部分代码如下:rn[code=C/C++] rnCInternetSession m_Session;rnCHttpConnection* m_Server = m_Session.GetHttpConnection(_T("xxx.xxx.com"), (INTERNET_PORT)80);rnCHttpFile* m_File = m_Server->OpenRequest(CHttpConnection::HTTP_VERB_POST, url);rnCString strHeader = _T("Content-Type: application/x-www-form-urlencoded\r\n"); rnm_File->SendRequest(strHeader, (LPVOID)(LPCTSTR)strRequest, strRequest.GetLength());[/code]rn有人遇到过这个错误么?求高手指点啊。。rn
CHttpFile SendRequest Post 没有数据
[code=c]rnstrTemp.Format(_T("guid=%s&title=iiiiiiii&linkman=llllllllll&telephone=ttttt&address=aaaaaa&wcpip=ccccc&wfpip=ffffff"),m_strGUID);rnrn //HINSTANCE hs = ShellExecute(NULL,_T("open"),strTemp,NULL,NULL,SW_HIDE);rn tryrn rn CString strServerName; rn CString strObject; rn INTERNET_PORT nPort; rn DWORD dwServiceType; rn if(!AfxParseURL((LPCTSTR)m_strWebService, dwServiceType, strServerName, strObject, nPort))rn rn MessageBox(_T("不是有效的网络地址!"));rn return;rn rn CString strFormData = strTemp; rn CInternetSession session; rn CHttpConnection* pConnection = session.GetHttpConnection(strServerName,nPort);//_T("192.168.1.216"),(INTERNET_PORT)80);rn if (pConnection==NULL)rn rn MessageBox(_T("连接失败!"));rn return;rn rn CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject,NULL,1,NULL,_T("HTTP/1.1"),INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_AUTO_REDIRECT);//_T("/wcp1/webservices/admin/unitwebservice.asmx/SaveUnit")); rn if (pFile==NULL)rn rn MessageBox(_T("找不到网络地址!"));rn return;rn rn CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded");rn pFile->AddRequestHeaders(strHeaders);rnrn BOOL result = pFile->SendRequest(strHeaders,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());rnrn DWORD dwRet;rn pFile->QueryInfoStatusCode(dwRet);rnrn if(dwRet != HTTP_STATUS_OK)rn rn CString errText;rn errText.Format(_T("POST出错,错误码:%d"), dwRet);rn AfxMessageBox(errText);rn rn[/code]rn返回的状态码是200,没有报错,可抓包看数据,没有数据rn求大神找问题
使用 CInternetSession ,CHttpFile下载文件引起内存泄漏
最近在使用 CInternetSession 和CHttpFile下载更新程序,遇到内存泄漏。发现使用了CHttpFile::Close后,依然会出现内存泄漏。还要再delete一下,才算是真正的把资源释放掉。 DWORD CMyFun::GetUrlFileLength(LPCTSTR szUrl) {  CInternetSession session;   CHttpFile
关于CHttpFile::SendRequest无响应的BUG ?
我用WinInet写了一个WEB后台的客户端,大致代码如下:rnrntryrnrn OpenUrl...rn SendRequest...rn rn ReadFile...rnrnrncatchrnrnrnrn然后我在里面增加一个log记录这个函数的每一步动作 ,发现有些客户端电脑没问题,而有的客户端电脑在[color=#FF0000]SendRequest[/color]这里就挂起了!rnrn求解?
请问CHttpFile::SendRequest的参数问题?
假设我要发送一个cookie:test=123,一个form数据 name=345 ,请问strHeaders和lpOptional的格式该如何写?rnrn其他的报文头Accept: Referer: Accept-Language: Content-Type: Accept-Encoding: User-Agent: Host: Content-Length: Connection:等我都会填写
CHttpFile 设置cookie总是失败的疑问的处理
CHttpFile 设置cookie的疑问 我在模拟给百度发get数据 http://www.baidu.com/s?wd=123 想加入Cookie: BAIDUID=11111111111111111111111111111111:FG=1; USERID=222222222222222222222222; J_MY=1 但是抓包怎么都看不到这个信息。 C/C
Chrome Extension sendMessage & sendRequest【谷歌浏览器扩展之消息通信】
嗯,标题不是翻译。         简言 content_scripts 在浏览的网页中运行(注入),background & options_page 在应用里运行,但 content_scripts 可与应用通信,窗体的交互参考前面提供的文档或官方的图和介绍这里不赘述。        前后台消息通信,刚开始接触时使用一些文档中提供的方法用不了。前后台的发送、接收消息的方式不同,长连
关于html语言中的元素标签有哪些是直接闭合的,而不是成对出现
-
使用CHttpFile上传下载文件
1.使用CHttpFile上传下载文件(类) http://blog.sina.com.cn/s/blog_46d93f190100ndca.html http://blog.csdn.net/cyforce/article/details/6195664
CHttpFile::SendRequest POST提交 为什么返回页面是乱码
[code=C/C++] pFile->SendRequest(NULL,0,szFormData.GetBuffer(0),szFormData.GetLength());rn DWORD StatusCode;rn pFile->QueryInfoStatusCode(StatusCode);rn if(StatusCode == HTTP_STATUS_OK)rn rn CString login;rn CString login_html;rn while (pFile->ReadString(login))rn rn login_html += login +"\r\n"; rn rn rn AfxMessageBox(login_html);[/code]为什么返回的页面是乱码,如果是GET 就没问题。rn
MFC 利用 CHttpFile类从网页读取 数据
#include void CReadInternetDataDlg::OnRead() {  CInternetSession c ;  CHttpFile * p=NULL ;  p=(CHttpFile*)c.OpenURL("http://127.0.0.1/web") ;   //打开一个URL  CString str ;  CString info="";  w
内存泄漏有哪些场景以及解决方法
类的静态变量持有大数据对象 静态变量长期维持到大数据对象的引用,阻止垃圾回收。 非静态内部类存在静态实例 非静态内部类会维持一个到外部类实例的引用,如果非静态内部类的实例是静态的,就会间接长期维持着外部类的引用,阻止被回收掉。 资源对象未关闭 资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们, 以便它们的缓冲及时回收内存。它
CHttpFile下载文件小例子
利用MFC类里CHttpFile CInternetSession CFile 等实现网络下载功能
CHttpFile SendRequest 会抛出什么类型的异常?
[code=C/C++]rncatch(CInternetException& e)rn rn ASSERT(FALSE);rn DWORD dwErrCode = e.m_dwError;rn return FALSE;rn rn catch(CException& e)rn rn ASSERT(FALSE);rn return FALSE;rn rn catch(...)rn rn ASSERT(FALSE);rn return FALSE;rn rn[/code]rnrn我的这三个过滤器 只有catch(...)能抓到异常 请问异常到底SendRequest抛出来的是什么异常?rnrn另外 想知道有没有一款工具 可以搜索文件内容(不是搜索文件名称) XP有 但是似乎Win7里面没找见
关于CHttpFile::SendRequest操作超时的问题
急急急!rn给公司写了一个自动升级的程序,我在网上下载的源码,然后财此基础上修改的一些东西.rn之前,分别在我的三台本本上面,都可以正常连接服务器并下载要下载的文件,(PS:其中一台机子是才装的裸系统).rn可是换到公司里,公司的每一个人运行程序都会报The Operation timed out!的错误.我查了很久,不知道是什么原因造成的.rn自动升级程序首先公司web服务器读取一个ini文件到缓冲区,然后写到系统临时文件目录下的update.ini文件内,然后从该文件内读取服务器版本,以及要下载的文件。我查看了一下,有些同事能够读取到配置文件,但是无法下载配置文件里罗列的下载文件。也是同样的The Operation timed out! 真的快崩溃了。rn以下是部分源码,请高手帮帮忙呀,真是急死人了!rn UpdateData(FALSE);rn CHttpFile *pFile = m_pHttp->OpenRequest(CHttpConnection::HTTP_VERB_GET, rn m_strIniPath, NULL, 1, NULL, NULL, m_dwHttpRequestFlags); rn if(!pFile->SendRequest())rn rn m_strStatus="连接服务器失败!";rn UpdateData(FALSE);rn pFile->Close();rn return;rn rn用到了CInternetSession , CHttpConnection 这两个类
子线程中的CHttpFile ->SendRequest()函数问题。
我在子线程中执行如下执行这个函数,总是有问题。rn子线程是连续运行的。也就是说这个函数被循环执行,运行一段时间以后就出问题。rntryrnrnbRet = pHttpFile ->SendRequest(strHeader);rnpHttpFile->QueryInfoStatusCode(dwRet);rnrncatch(CException &e)rnrnTRACE("in httpMethod Sendquest");rnpHttpFile->Close();rndelete pHttpFile;rne.Delete();rnreturn NULL;rn出现的错误捕捉不到。为什么?rn3x in advance.rn
mysql_store_result()函数卡住返回
直接调用mysql_store_result没有问题,而封装在一个函数当中,再调用它就不行了,请问各位前辈高人,这是为何
设置文件下载页面的代码时下载后的数据出现数据错误的错误原因和解决办法
其实,这不能算一个标准的错误,但是,这个错误让我弄了一下午也没有弄出来,问题是这样的:当我在php的页面设置下载的代码完成之后,总的看,代码并没有任何问题,但是,当我在实际下载的时候,单独把文件打开,则数据错误,在这个问题出现之后,我看了一下图片文件的代码和文件大小,发现比实际文件大了一些,对比代码,发现有些许不同,要说修改那就根本不能,所以,我就在代码里面继续找问题,这样找了一下午,也没有找到什
HBase读取数据卡住长时间不返回的原因分析
这些天做HBase,但是遇到Hbase连接上之后读取数据的时候,一直卡在那儿,程序既不报错也不结束,让我好生纠结,困扰我一整天。现在问题终于解决,现在写了一段Demo代码,具体如下:public static void main(String[] args) throws IOException { System.setProperty("hadoop.home.dir", "f:/hado
关于java 中流读取时遇到的阻塞和返回-1的问题探究
最近在做一些关于网络方面的开发,常用到java中流的读取,其中有一个问题困扰了我好久,就是流的阻塞和返回-1的问题。      案例1、 看代码: package io; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Serv
VC下CHttpFile.ReadString 中文读取乱码的编码方法
//UTF-8 to GB2312 CString WebProcess::Convert(CString str,int sourceCodepage, int targetCodepage){ int len = str.GetLength(); int unicodeLen = MultiByteToWideChar(sourceCodepage,0,str,-1,NULL,0...
Java中内存泄露场景
一、什么是内存泄露,为什么会出现内存泄露     内存泄露是指不再使用的对象由于仍然被其他对象引用导致垃圾收集器不能及时释放这些对象占用的内存从而造成内存空间浪费的现象。从内存泄露的概念我们知道了之所以产生内存内漏,是因为长生命周期的对象持有短生命周期对象的引用,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用,会导致短生命周期对象不能被回收,举个例子更详细的说明一下。 ...
使用CInternetSession 获取网页内容。。。解决了ReadString时的乱码
CInternetSession session; CHttpFile *file = NULL; CString strURL = _T("http://www.baidu.com"); CString strHtml = _T(""); //存放网页数据 try { file = (CHttpFile*)session.OpenURL(strURL); } catch(CInternetExc
推荐算法:基于情景的推荐
预过滤 后过滤 建模 => 将用户和物品放入,特定的情景中,考虑; 消费者的决策,和他当时的心情是相关的; 1. 建模 将情景作为附加数据集合 从二维推荐到三维 R:User∗Item∗Context−−>RatingR: User*Item*Context --> Rating情景的定义推进系统手册-P157*特征的选择 @@@Toward optimal featrue selecti
Linux df 命令长时间没有返回
问题现象:  Linux系统下使用 df 统计磁盘使用率时,有时候会出现 df -h/df -i 卡住不动,没有返回统计信息的情况,必须按 Ctrl+C 将其强制终止才能返回。 如下图所示: 问题原因: 该问题通常是由于系统内挂载了 NFS 共享分区,而 NFS 响应缓慢或文件较多,导致统计 NFS 分区相关信息耗时很久。 处理办法: 可使用 strace df
VC++6.0 通过HTTP方式获取网页 OpenURL
//头部包含afxinet.h  2  #include afxinet.h>  3 CInternetSession::OpenURL函数原型为:  4 CStdioFile* OpenURL( LPCTSTR pstrURL, //文件URL地址  5   DWORD dwContext = 1, //上下文ID  6   DWORD dwFlags = INTERNET_FLAG_
tomcat控制台输出信息时会卡住,接口拿不到数据解决方法
环境:阿里云window service 2012  tomcat7.02 程序没有问题,只是控制台信息卡,感觉像程序休眠了一样 ,然后在控制台点backspace这个键,程序恢复正常,控制台日志正常输出.静态文件访问可以 查了好多资料没有解决 最后在篇文章找到解决方法.设置之后再没发生这种问题 转自http://blog.csdn.net/java2000_
关于构造函数不能有返回类型的错误
今天写程序老是报错,错误error C2533: “ImageProcess::{ctor}”: 构造函数不能有返回类型,可是ImageProcess()构造函数本来就没写返回类型啊。检查的N久,最后发现原因居然是在类的定义时,后面没有加上;这么小的错误,无语呀!
如何让滚动条消失,且页面可以正常滚动(解决写选项卡时可能遇见的一个问题)
如何让滚动条消失 但同时又保持页面可以正常滚动呢?很简单,我们只需要加一个属性: 1.在谷歌浏览器中 页面加入 :::-webkit-scrollbar { width: 0px; } 将滚动条宽度设置为0;2.在IE 中比较麻烦需要添加如下代码:HTML { scrollbar-base-color: #fff; scrollbar-base-co
哪些重要的思维方式让人受益匪浅
首先,重点的是心态: 关于竞争  竞争是好事,别怕。有竞争,就有机会,别怕,别排斥,输了也没关系,别怂了就行。大到国家,小到昆虫草木,到处都有竞争,竞争是常态,别躲。 关于希望 没希望的时候,别绝望。动一动,试一试,问一问,别坐着难过,别放弃。做事做人,不可能总是一帆风顺,迷茫的时候也要走,痛苦的时候也要做,结果怎样,到时再说。 关于公平 世界是不公平的。有幸运的,有不幸运的,别嫉妒,别鄙视
java中用什么方式可以是运行的线程终止????
java中有3中方式可以终止正在运行的线程 1.使用退出标志,正常退出,也就是当run方法完成后终止 2.使用stop方法强行停止,这是一个已经过期的方法,不推荐使用,可以使数据造成不一样的后果 3.使用interrupt方法中断线程 这里主要讲一下:interrupt的使用 interrupt()方法的效果并不像for+break语句那样,马上停止循环。当线程调用interru
json 数据类型返回值区别
JSONObject 返回一个实体值 ,取值jsonobject.optString("xx"); JSONArray 返回一个list集合值,取值jsonArray.optJSONObject(i).getString("xx");
phonegap中 app 开发的那些坑~~!!
最近用phonegap开发app,遇到各种坑,在这里写下了,以此纪念已逝去的青春第一步 就XX搭建各种环境,网上也有很多详细教程,列出一个 1 java JDK (搜索一下…….) 2 android SDK 最新版(我当时的版本是 API 19 点击打开链接) 3 Ant 打包工具 (百度一个或者 点击打开链接) 4 eclipse (建议使用google的 因为内置ADT
嵌入式Linux开发板常见问题
华恒ColdFire系列嵌入式Linux开发板常见问题解答 ——基于公用核心板HHCF5249/5272 (华恒科技版权所有) 1、关于宿主机Linux的安装 建议使用REDHAT系列:建议选择完全安装,即选择Custom,然后在Package中选择everything。 【以下配置详见最新PDF手册下载(例如:HHCO5272-R1的手册)】
html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
滚动条基本知识: 建议比价华丽的页面使用overflow:scroll这个样式的滚动条,比较好看。 scrollbar属性、样式详解 1. overflow内容溢出时的设置(设定被设定对象是否显示滚动条) overflow-x水平方向内容溢出时的设置 overflow-y垂直方向内容溢出时的设置 以上三个属性设置的值为visible(默认值)、scroll、hidd
CHttpFile的ReadString返回乱码
源码如下:请高手看看错在什么地方?rn我的MessageBox出来的是一堆乱码,不过感觉结果是正确的。rnrnCInternetSession* cis=new CInternetSession;rnCHttpConnection* pHttpCon=cis->GetHttpConnection(_T("192.168.0.17"),INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE,8007);rn CHttpFile * pFile;rn //pFile=pHttpCon->OpenRequest(CHttpConnection::HTTP_VERB_GET,_T("/a.htm"));rn //pFile->SendRequest();rn pFile=(CHttpFile *)cis->OpenURL(_T("Http://192.168.0.17:8007/a.htm"));rn CString szSession,szResult("\0");rn while(pFile->ReadString(szSession)!=FALSE)rn rn szResult=szResult+szSession;rn rn rn MessageBox(szResult);rn pFile->Close(); rn pFile = NULL; rn delete pFile; rn pHttpCon->Close(); rn pHttpCon = NULL; rn delete pHttpCon; rn cis->Close();rn cis = NULL; rn delete cis;
用session的基本应有场景
1.认识Session           Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Se
STM32库开发实战指南:基于STM32F4
电子与嵌入式系统设计
深入理解Java异常的使用场景
出自:https://www.cnblogs.com/yaohonv/p/java_exception.html 1. 代码可读性变差,业务逻辑难以理解   异常流与业务状态流混在一起,无法从接口协议层面理解业务代码,只能深入到方法(Method)内部才能准确理解返回值的行为   可看一下代码: public UserProfile findByID(long user_id) { ...
java查询数据库表卡死,解决方法
五一回来上班,像往常一样打开电脑启动eclipse运行项目,一切都很正常……         言归正传,先说说发生的现象,项目启动一直卡死,设置的tomcat启动超时时间120,不会是因为这个启动失败,环境用了好几个月一直正常;        后来查看日志发现是在查询其中一张表的时候卡住了,这里说一下我用的是mysql数据库,然后使用数据库连接工具dbeaver去看数据库情况,发现也打不开,让
inotify不生效问题
inotify还是不错的,玩着似乎很简单,但是坑也不少,如果不仔细查看官方文档,可能就真的不知道哪里存在坑,哪里需要注意。前段时间,在项目中使用inotify监控配置文件,以达到实时感知配置改变的目的。但近日查看线上日志发现,配置文件改变后,inotify并没有通知,结果导致配置一直未被更改。     在描述之前,要说明一下,我代码中的inotify使用方式,这个方式和网上大多方式一样:
在C++中,为什么构造函数不能有返回值?
 在C++中,为什么构造函数不能有返回值?   (1)假设有一个类C,有如下定义:class C{public:   C():x_(0) {}   C(int i):x_(i) {}private:   int x_;};如果C的构造函数可以返回值,比如int:   int C():x_(0) { return 1; //1表示构造成功,0
一张照片让你的安卓手机崩溃
废话少说,直接上图, 使用方法: 将图片保存到电脑,用电脑发送到QQ、微信等,当别人用安卓手机查看这幅图时,他的QQ、微信就会闪退了。 拯救方法: 多发点消息刷屏,让对方打开QQ、微信时看不到这张图片就Ok了。 注:仅供娱乐、研究,切勿恶搞,恶意使用所带来的一切后果自负! 欢迎个人转载,但须在文章页面明显位置给出原文连接; 未经作者同意必须保留此段声明、不得随意修改原文、不得用
方法返回值的类型应该怎么定义
在做开发时遇到了这样一个问题,有一个方法我需要对一个json的字符串做一些处理,处理完成之后再返回,但是返回的需要并不明确,返回多种类型的对象从功能上讲都是一样的,如Object,String.伪代码如下: public ?? adaptTheMetadataByLanguage(String json) { ObjectMapper mapper = new Obje...
python爬虫requests.get出错的解决方法
发现所有网站都访问不了,原来是在运行fiddler的时候自动挂了代理将使用代理服务器的选项关掉即可
jdbcTemplate.queryForObject无法返回数据,页面卡住
今天碰到一个超级奇怪的问题,就是点击我之前的查询页面,结果页面停在了请稍后的死循环中,无法进行下一步操作。 于是我设了断点,走到我的jdbcTemplate.queryForObject这个方法时,无法return,导致我下一步无法进行,所以我以为是queryForList 使用错误,找了一大堆范例进行尝试,都以失败告终。   于是我开始从sql语句下手,反复在SQL Workbench执行
未来有几种?聊聊气候情景(climate scenarios)的故事
人类一直想预测未来,从一开始就想。 帝王想知道国运长不长久,将军想知道出征是否能凯旋,而民众也想知道明天股票是涨是跌。预测有很多种方法,有的可以用科学解释,有的,呃,可能不行。然而未来有很多种,比如说你每天吃三顿饭,我可以预测你明天也吃三顿,但是如果你明天中午才起床,就吃了两顿饭怎么办?或者算命的先生说你明年命里有桃花,能牵手个好妹子,结果你第二天就被机油掰弯了怎么办?所以无论是我还是算命先
_beginthreadex函数卡住,不返回是什么原因
本人写了一个windows系统下利用管道进行进程间通信的程序,其中有一步是通过rn HANDLE hBusConn = (HANDLE)_beginthreadex(NULL, 0, m_BusConnThread, this, 0, NULL);rn来实施不同进程之间有管道 连接操作。rn但是测试时发现有时候这个函数会卡住返回。线程函数m_BusConnThread也没有开始运行。rnm_BusConnThread的内容是 static unsigned int __stdcall m_BusConnThread(void *pPM) return ((CBusPort *)pPM)->m_BusConn(); rn它是一个类中的成员函数,调用另外一个函数实施具体功能。rn我在循环测试的时候,程序功能是正常的,但是跑着跑着就可能会出现HANDLE hBusConn = (HANDLE)_beginthreadex(NULL, 0, m_BusConnThread, this, 0, NULL);这一句不返回的情况。rn我查msdn上也没有提到任何这个函数会卡住的信息。rn大家有谁也遇到类似问题了,能否帮助分析一下原因是什么。
typeof可以返回的数据类型总结
&lt;script&gt; // 基本数据类型 // number类型 var num = 1; console.log(typeof num);//返回的是number // string 类型 var str = 'jack'; console.log(typeof str);//返回的是st...
python之返回函数
高阶函数中,除了可以接受函数作为参数参与运算,同时,还能够将函数作为结果值返回比如def lazy_sum(*args): def sum(): ax=0 for x in args: ax=ax+x return ax return sum r=lazy_sum(1,2,3,4,5) print(r) 注:变...
nvidia-smi出现的比较慢
一个比较老的问题,一般四卡以上的机器可能会出现 以前我都是 nvidia-smi -pm 1 后来发现了有一个貌似比较科学的方法 sudo nvidia-persistenced --persistence-mode...
javascript里for循环里sendrequestsendrequest返回的是一样的值
for循环里sendrequest,假如循环了1-5,但是sendrequest之后获取到的也是五次,但是都是1-5中的5,也就是最后一个值。为什么呢?rnrnfor (var ids=0; ids, paramsp, function(response) 。。。。。rn。。。。。。rnalert(ids);rn。。。。。。。rnrnrnrnrnrn也就是说alert(ids)出来的东西不一样,虽然都在for循环里,但是sendrequest里的都是alert出来的5
VC6.0防假死补丁
在一些学校使用的VC6.0版本中,会出现编译错误卡住的情况,这个小东西安装后可以有效避免此类情况的发生
求解随机规划的情景树 scenario 方法
最近着手将研究扩展到随机问题,发现常用的一个方法是情景树方法,目前看得还不是很明白,看明白后慢慢将心得写下来
Linux内核源代码中的C语言代码(Linux内核源代码情景分析读书笔记连载)
1 Linux内核的主体是以 GNU 的 C 语言编写的,GNU为此提供了编译工具gcc。GNU对C语言本身作了不少扩充。 首先,gcc从C++语言中吸收了“inline”和“const”。其实,GNU的C和C++是合为一体的,gcc即是C编译又是C++编译,所以从C++中吸收一些东西是很自然的。 还有,为了支持64位的CPU结构,gcc增加了一种新的基本数据类型“long long int”
如何使作为主键的字段出现重复数据?
做一个报价表,商品名作为主键,希望可以与其他表构成关系,但一个商品名可能重复存在两次报价,又不想增加字段第一次报价第二次报价的,应该怎么处理?
几种常见数据结构及使用情景
Array需要处理的元素数量确定并且需要使用下标时可以考虑,不过建议使用List&lt;T&gt;ArrayList不推荐使用,建议用List&lt;T&gt;List&lt;T&gt;泛型List需要处理的元素数量不确定时 通常建议使用LinkedList&lt;T&gt;链表适合元素数量不固定,需要经常增减节点的情况,2端都可以增减Queue&lt;T&gt;先进先出的情况Stack&lt;T...
基础篇:让线程停止运行的几种方式(七)
这篇文章我们来讨论一下终止线程运行的方法; 中断线程的方法: public static void stopThread() throws InterruptedException{ Thread t = new Thread(new Runnable() { @Override public void run() { while(!Thread.currentThr
网站的死链接查询工具
网站死链接的查询小工具,可以让你清楚看到自己站点有哪些死链接。
struts2返回值类型
action方法特点:可以没有返回值,如果有返回值,必须是string,action方法public
Ping命令返回错误信息说明
以下内容未经全部验证,不保证正确性。1.Request timed out这是大家经常碰到的提示信息,很多文章中说这是对方机器置了过滤ICMP数据包,从上面工作过程来看,这是不完全正确的,至少有下几种情况。(1) 对方已关机,或者网络上根本没有这个地址:比如在上图中主机A中PING 192.168.0.7 ,或者主机B关机了,在主机A中PING 192.168.0.5 都会得到超时的信息。(2)对
一个Android app的卡死的BUG
做android,免不了要去运行一些跑分程序,常用的跑分程序有quadrant(象限),nbench,安兔兔等。作为系统工程师,对这些跑分程序都非常的不屑,这个只能是一个不客观的参考,但客户都喜欢拿这个比较,于是乎,各家各厂都或多或少会针对此做优化(甚至是作弊或直接的作假),这可不是什么好现象,浮夸的厉害,到处放卫星,亩产万斤的,弄的我们这些老实人都很被动。不过这里就不说这些破事了。国内大家常用的
curl访问不需要等待返回值的情况
//无视请求断开 ignore_user_abort();        header('HTTP/1.1 200 OK');             header('Content-Length:0');             header('Connection:Close');             flush();
windows内核情景分析--系统调用
Windows的地址空间分用户模式与内核模式,低2GB的部分叫用户模式,高2G的部分叫内核模式,位于用户空间的代码不能访问内核空间,位于内核空间的代码却可以访问用户空间 一个线程的运行状态分内核态与用户态,当指令位于用户空间时,就表示当前处于内核态,当指令位于内核空间时,就处于内核态. 一个线程由用户态进入内核态的途径有3种典型的方式: 1、 主动通过int 2e(软中断自陷方式)或syse
网络原因造成 spark task 卡住
主机名映射出错背景:Yarn集群新加入了一批Spark机器后发现运行Spark任务时,一些task会无限卡住且driver端没有任何提示。解决:进入task卡住的节点查看container stderr日志,发现在获取其他节点block信息时,连接不上其他的机器节点,不停重试。 怀疑部分旧节点的/etc/hosts文件被运维更新漏了,查看/etc/hosts,发现没有加入新节点的地址,加入后问
Eclipse可以run无法debug(debug时卡住不动)
好久没写东西了,记下笔记 今天
执行mount命令时遇到的问题
问题一: you must specify the filesystem type 解决办法: mount -t ISO9660 /dev/cdrom /mnt/cdr 使用 mount 命令时必须指定被挂接设备的类型,即:mount -t 【设备类型】 【被挂接的设备名】 【挂接处目录名】  -t 指定设备的文件系统类型,常见的有:                     
使用CInternetSession获取utf-8页面中文乱码问题解决方法
代码如下: myurl="http://www.csdn.net";       CInternetSession    session;       CHttpFile*    theFile    =    NULL;       theFile    =    (CHttpFile*)session.OpenURL(myurl);       CString    szLi
如何让一个函数返回多个返回
以一个题目为例: 要求用户使用一个整数指出自己的身高(单位为英寸),然后将身高转化为英尺和英寸。 方法一: 利用结构体,注意函数定义一定要用结构体来定义 struct trans { int chi; int cun; }; trans transform(int); int main() { using namespace std; int a; cin &gt;&gt;...
[急]http多线程下载的问题中CHttpFile::SendRequest()的问题
要实现HTTP多线程下载功能, 设计让每个线程都独自创建CInternetSession,CHttpConnection,CHttpFile对象,利用 CHttpFile::SendRequest() 发送http头时 ,发现一个奇怪现象:就是只能正常启动两个线程,第三个以后的线程都卡在了SendRequest() 这里,而且就算是单个线程里面执行三次SendRequest()也卡住了,不知道是什么原因.是不是下面什么参数设置错了rnCInternetSession m_InternetSession(NULL,1,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);rnpHTTP=m_InternetSession.GetHttpConnection(strServer,0,nPort,NULL,NULL); rnpF=pHTTP->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject,NULL,1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT |INTERNET_FLAG_NO_AUTO_REDIRECT|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE);rnrn请高手赐教
为什么chttpfile每次SendRequest都会创建新的连接
在一个循环里面获得网页,pFile是CHttpFile的指针rn[code=C/C++][/code]rn.....rn.....rnpFile1=(CHttpFile *)pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET,str,NULL,1,NULL,NULL,INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_COOKIES);rnwhile(1)rn rn pFile->SendRequest(); rn .....rn .....rnrn我用抓包工具查看了,发现每次SendRequest的时候都会重新和服务器建立一个连接,然后再获得数据。但是我用另外一个同样功能的软件运行,抓包查看,发现那个软件只有第一次建立了连接,后面循环里面的都没有再建立连接,直接接收数据,这样时间比我写的那个要节省一半。rn现在我想SendRequest的时候就用原来第一次的连接,不用创建新连接,但是试了很多方法都没有用,再Header里面加上Keep-Alive也没有用,谁来帮帮忙
C生成exe文件,在命令行执行,无显示结果的问题
随便编写一个C语言程序,如下即可: #include "stdio.h" void main(){ printf("Welcome to C World!/n");/*notation*/ } 编译成exe文件,并在命令行调用: 正常显示应该是: 但是很多情况下,执行此exe程序产生的结果却是空白:   无论是Turbo C2.0还是3.0的版本编译都有这个问题,也有可能是我系统的问题,原因还没找到,但是先说解决方
eclipse 卡住不动
今天遇到进入eclipse时一直卡在 DDMS post-create init 网上搜说删除adb.exe进程,占用5037的进程无果 最后是 删除 D:\workspace\.metadata\.lock 文件才有用,特此记录下。
鼠标指针划过有星星
鼠标指针划过有彩色星星,气泡,渐隐渐现。 非常唯美。
IOS 自定义返回按钮 滑动返回假死解决方法
1、自定义返回按钮 2、添加滑动返回操作后出现假死现象 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // 滑动返回 self.interactivePopGestureRecognizer.enabled = YES;
有人知道为什么有时候CHttpFile::SendRequest()会阻塞?
有人知道为什么有时候CHttpFile::SendRequest()会阻塞?rnCHttpFile::ReadString()也会阻塞?rnrnrnpServer = session.GetHttpConnection(strServerName, nPort);rnrn pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,rn strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags);rn pFile->AddRequestHeaders(szHeaders);rn TRACE("\n SendRequest" );rn pFile->SendRequest();rnrnpFile=(CHttpFile* )session.OpenURL(csHttp,1,INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_TRANSFER_ASCII );rn if(pFile!=NULL)rn TCHAR sz[1024];rn TRACE("ReadString");rn while (pFile->ReadString(sz, 1023))rn rn strRet.Insert(strlen((LPCTSTR)strRet), sz);rn rn pFile->Close();
CHttpFile::SendRequest(...),用在FOR循环中,遇到奇怪的400错误问题。急!!
for(int i=0 .....)rnrn postdata(i);rnrnrnpostdata(i)rnrn .....rnif(pFile->SendRequest(NULL,0, (LPVOID)(LPCTSTR)szPostData, szPostData.GetLength()+1))rnrn //这儿我一定要睡上几十秒才能得到正确的结果rn Sleep(20000)rn DWORD dwRet;rn pFile->QueryInfoStatusCode(dwRet);rn if (dwRet == HTTP_STATUS_OK)rn rn rnrn rnrn如果用了Sleep就很好,没什么问题,如果不用,就提交一半,另外一半返回400错误。不知道有没办法解?
CHttpFile网络交互功能实现...
程序内部读取网络信息, 该代码可以通过网络提交验证密码再进行判断... 首先,需要在文件头加上 #include   CInternetSession mySession(NULL,0); CHttpFile* myHttpFile=NULL; CString myData; CString myUrl; myUrl = "http://127.0.0.1/yanz.php?name=
我们是很有底线的