⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m5httpdown.h

📁 Symbian第二版断点续传代码,可以节省用户下载流量
💻 H
字号:
#ifndef _M5_HTTP_DOWN_H_
#include <e32std.h>
#include <e32base.h>
#include "socketsengine.h"
#include "uinotifier.h"
#include "m5httpdownnotifier.h"

#define HTTP_WEB_PORT            80
#define HTTP_TEMP_BUF_LEN        120
#define HTTP_SEND_BUF_LEN        256

#define HTTP_DOWN_CMWAP			 0
#define HTTP_DOWN_CMNET			 1

_LIT8(KHttpRespOK,	   "200 OK") ; 
_LIT8(KHttpCMWapHdrFileLen, "Content-length: ") ;
_LIT8(KHttpCMNetHdrFileLen, "Content-Length: ") ; 
_LIT8(KHttpClip,	   "/") ; 
_LIT8(KHttpHdrDiv,     "\r\n") ; 
_LIT8(KHttpHdrEnd,	   "\r\n\r\n") ; 
_LIT8(KHttpPrefix,	   "http://") ; 
_LIT8(KHttpsPrefix,	   "https://") ; 

_LIT8(KHttpCommonGet1, "GET ") ; 
_LIT8(KHttpCommonGet2, " HTTP/1.1\r\nUser-Agent: Nokia 7610\r\nHost: ") ; 
_LIT8(KHttpCommonGet3,  ":") ; 
_LIT8(KHttpCommonGet4, "\r\nAccept: */*\r\nConnection: Keep-Alive\r\n\r\n") ;

_LIT8(KHttpResumeGet1,  "GET ") ; 
_LIT8(KHttpResumeGet2,  " HTTP/1.1\r\nUser-Agent: Nokia 7610\r\nHost: ") ; 
_LIT8(KHttpResumeGet3,  ":") ; 
_LIT8(KHttpResumeGet4,  "\r\nAccept: */*\r\nRANGE: bytes=") ; 
_LIT8(KHttpResumeGet5,  "-\r\nConnection: Keep-Alive\r\n\r\n") ; 

class CM5HttpDown : public CBase, public MUINotifier {
protected:
    // socket data
	TInt				     m_down_type ; 
    CSocketsEngine *		 m_sock_eng ; 
    TBool					 m_running ;
    TBool					 m_is_first_resp ; 
    TInt				     m_web_port ;
    TInt				     m_total_bytes ; 
    TInt					 m_recv_bytes;
	TBuf8<HTTP_SEND_BUF_LEN> m_send_buf ; 
	TBuf8<HTTP_TEMP_BUF_LEN> m_web_addr ; 
	TBuf8<HTTP_TEMP_BUF_LEN> m_web_fname ; 
	M5HttpDownNotifier&		 m_m5_notifier ; 
    
public: // MUINotifier implements 
	void PrintNotify(const TDesC& aMessage, TUint aAttributes = 0) ;
	void RecvNotify(const TDesC8& aMessage) ;
	void ErrorNotify(const TDesC& aErrMessage, TInt aErrCode)  ; 
	void SetStatus(const TDesC& aStatus) ; 

protected:
	TInt  Str2Int(const TDesC8 & s) ; 
	TBool CheckRecv(const TDesC8& recv_buf) ; 
    TBool ParseUri(TDesC8&  uri, TDes8& web_addr, TDes8& web_fname, TInt& web_port) ; 
    TBool ParseWebFileInfo(const TDesC8& recv_buf, TInt& total_length, TInt& jump_len) ; 
    TBool GetRespField(const TDesC8& recv_buf, TDesC8& field_name, TDesC8& end_flag, TDes8& res) ; 
                        
    TBool InitSock(TDesC8& server_name, TInt server_port) ; 
    TBool SendReq(TDesC8& req_str) ; 
    TBool CloseSock() ; 

private:
	CM5HttpDown(M5HttpDownNotifier & m5_notifier) ; 
	void ConstructL() ; 

public:
	~CM5HttpDown() ; 
	static CM5HttpDown * NewL(M5HttpDownNotifier& m5_notifier) ; 
	static CM5HttpDown * NewLC(M5HttpDownNotifier& m5_notifier) ; 

    TBool IsRunning() {return m_running ; }
    TInt  HttpTotalSize() { return m_total_bytes ; }
    TInt  HttpRecvSize() { return m_recv_bytes ; } 

	TBool HttpConnPorxy(TDesC8& uri, TInt down_type = HTTP_DOWN_CMWAP) ; 
    TBool HttpDown(TDesC8& uri, TInt recv_bytes = 0) ; 
	TBool HttpStopDown() ; 
} ; 
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -