clienthttp.h
来自「wince 下socket实现的HTTP类」· C头文件 代码 · 共 96 行
H
96 行
/*******************************************************************************
* (C) Copyright 2008 Giant Electronics LTD
*
* These computer program listings and specifications are the property of Giant
* Electronics LTD and shall not be reproduced or copied or used in whole or in
* part without written permission from Giant Electronics LTD .
*
* Project: IViewer
* File Name: ClientHTTP.h
* Programer(s): Ben Zhan
* Created: 20080729
* Description: interface of encapsulating HTTP protocol
* This class encapsulates HTTP protocol and provides the functionality to request
and read files on an HTTP server.
*******************************************************************************/
/*
CClientHTTP: 继承自CClientSocket的HTTP操作类
应用举例:
//初始化套接字
CClientSocket::SocketInit();
//生成HTTP 实例
CClientHTTP http;
http.SendRequest(false,"www.sina.com.cn",0,0,0);
int nHeadLength,nBodyLength;
//取返回的信息头
BYTE* pHead = http.GetResponseHeader(nHeadLength);
//取返回的HTML内容
BYTE* pBody = http.GetResponseBody(nBodyLength);
*/
#if !defined(AFX_CLIENTHTTP_H__BDF77B47_0251_4613_BE79_7DADC95775B4__INCLUDED_)
#define AFX_CLIENTHTTP_H__BDF77B47_0251_4613_BE79_7DADC95775B4__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ClientSocket.h"
#define E_HTTP_CONNECT_FAILED 0x15
#define E_HTTP_REQUEST_FAILED 0x16
#define E_HTTP_RECEIVEHEADER_FAILED 0x17
#define E_HTTP_RECEIVEBODY_FAILED 0x18
#define E_HTTP_SUCCEED 0x19
#define E_HTTP_OTHERERROR 0x20
#define HTTPHEADER_MAX_SIZE 2048
class CClientHTTP : public CClientSocket
{
public:
CClientHTTP();
virtual ~CClientHTTP();
//发送请求
int SendURLRequest(LPCSTR lpszURL,HANDLE hCancelEvent=NULL);
//接收信息头
int ReceiveResponseHeader(HANDLE hCancelEvent=NULL);
//取HTTP返回状态码 400-500表示出错
int GetResponseStatus(DWORD &dwStatusCode);//获取HTTP状态
int GetField(LPCSTR lpszSession, LPSTR lpszValue,LPSTR lpszHeader=NULL); //返回某个域值,-1表示不成功
int SendRequest(bool bIsPost, LPCSTR lpszUrl, LPSTR lpszPostMsg, int iPostLength, HANDLE hCancelEvent) ;
BYTE* GetResponseHeader(); //取得返回的信息头
private:
BOOL ValidHostChar(TCHAR ch) ;
void ParseURL(LPCSTR lpszURL,LPSTR lpszProtocol,int lprotocol,LPSTR lpHost,int iHost,LPSTR lpRequest,int iRequest,int * piPort);
int SendHTTP(LPCSTR lpszURL,LPCSTR lpszHeaderReceive,BYTE * post,DWORD dwPostLength,HANDLE hCancelEvent);
LPCSTR FormatRequestHeader(LPSTR lpszServer,LPSTR lpszObject,long &lLength,
LPSTR lpszCookie=NULL,LPSTR lpszReferer=NULL,
long lFrom=0,long lTo=0,
int nServerType=0); //格式化请求头
// added by Ben 2009-03-17
LPCSTR FormatPostRequestHeader(LPSTR lpszServer,LPSTR lpszObject,long lPostDataLength,long &lLength);
public:
DWORD GetMSizeFromW(LPWSTR lpwszStr);
DWORD GetWSizeFromM(LPCSTR lpcszStr);
BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize);
BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize);
private:
CHAR m_ResponeHeaderBuf[HTTPHEADER_MAX_SIZE];
CHAR m_RequestHeaderBuf[HTTPHEADER_MAX_SIZE];
};
#endif // !defined(AFX_CLIENTHTTP_H__BDF77B47_0251_4613_BE79_7DADC95775B4__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?