BOOL PathIsURL(LPCTSTR pszPath);
头文件:shlwapi.h
功能: 检查传入字符串是否是合法的url地址
参数: [IN]pszPath 欲检查的字符串
返回值:true 合法
false 不合法
BOOL InternetGetConnectedState(LPDWORD lpdwFlags, DWORD dwReserved);
头文件:Wininet.h
功能: 检查当前计算机的网络连接状态
参数: [OUT]lpdwFlags 当前网络状态
[IN]dwReserved 保留参数,必须为0
返回值:true 网络连接正常
false 网络连接错误
lpdwFlags返回值使用:
if (lpdwFlags& INTERNET_CONNECTION_MODEM)
AfxMessageBox("在线:拨号上网");
else if (lpdwFlags&INTERNET_CONNECTION_LAN)
AfxMessageBox("在线:通过局域网");
else if (lpdwFlags& INTERNET_CONNECTION_PROXY)
AfxMessageBox("在线:代理");
else if (lpdwFlags&INTERNET_CONNECTION_MODEM_BUSY)
AfxMessageBox("MODEM被其他非INTERNET连接占用");
else if (lpdwFlags&INTERNET_CONNECTION_CONFIGURED)
AfxMessageBox("虽然可以联网,但当前不可用");
else if (lpdwFlags&INTERNET_CONNECTION_OFFLINE )
AfxMessageBox("离线");
else if (lpdwFlags&INTERNET_RAS_INSTALLED)
AfxMessageBox("RAS安装");
BOOL AFXAPI AfxParseURL(LPCTSTR pstrURL, DWORD& dwServiceType, CString& strServer, CString& strObject, INTERNET_PORT& nPort);
头文件:Afxinet.h
功能: 解析url地址
参数: [IN]pstrURL 要解析的url地址
[IN]dwServiceType 服务类型
AFX_INET_SERVICE_FTP/AFX_INET_SERVICE_HTTP/AFX_INET_SERVICE_HTTPS/AFX_INET_SERVICE_GOPHER/AFX_INET_SERVICE_FILE
/AFX_INET_SERVICE_MAILTO/AFX_INET_SERVICE_NEWS/AFX_INET_SERVICE_NNTP/AFX_INET_SERVICE_TELNET/AFX_INET_SERVICE_WAIS
/AFX_INET_SERVICE_MID/AFX_INET_SERVICE_CID/AFX_INET_SERVICE_PROSPERO/AFX_INET_SERVICE_AFS/AFX_INET_SERVICE_UNK
[OUT]strServer 主机名
[OUT]strObject 路径
[OUT]nPort 端口号
返回值:非0 解析正确
0 解析错误
CHttpConnection* GetHttpConnection(LPCTSTR pstrServer, INTERNET_PORT nPort = INTERNET_INVALID_PORT_NUMBER,
LPCTSTR pstrUserName = NULL, LPCTSTR pstrPassword = NULL);
头文件:afxinet.h
功能: 建立http连接
参数: [IN]pstrServer 主机名
[IN]nPort 端口号
[OUT]pstrUserName 用户名
[OUT]pstrPassword 密码
返回值:成功则返回该连接的对象,失败则抛出异常
CHttpFile* OpenRequest(LPCTSTR pstrVerb, LPCTSTR pstrObjectName, LPCTSTR pstrReferer = NULL, DWORD_PTR dwContext = 1, LPCTSTR* ppstrAcceptTypes = NULL,
LPCTSTR pstrVersion = NULL, DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT);
头文件:afxinet.h
功能: 打开http连接
参数: [IN]pstrVerb 一个指向某个包含在请求中要用的动词的字符串指针。如果为NULL,则使用“GET”
[IN]pstrObjectName 路径
[IN]pstrReferer 当前请求URL的原始包含者(前导URL),也就是说,当前的这个URL是从某个网页引导过来的,如果没有则为NULL
返回值:指向所需的CHttpFile对象的指针,失败则为空
BOOL AddRequestHeaders(LPCTSTR pstrHeaders, DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW, int dwHeadersLen = -1);
头文件:afxinet.h
功能: 向http请求句柄添加一个或多个http请求头
参数: [IN]pstrHeaders 添加的请求头
返回值:成功返回非0,失败返回0
BOOL SendRequestEx(DWORD dwTotalLen, DWORD dwFlags = HSR_INITIATE, DWORD_PTR dwContext = 1);
头文件:afxinet.h
功能: 向http发送请求头
参数: [IN]dwTotalLen 请求头长度
返回值:成功返回非0,失败返回0
BOOL EndRequest(DWORD dwFlags = 0, LPINTERNET_BUFFERS lpBuffIn = NULL, DWORD_PTR dwContext = 1);
头文件:afxinet.h
功能: 结束请求
返回值:成功返回非0,失败返回0
BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
头文件:afxinet.h
功能: 获取http请求的响应状态
参数: [OUT]dwStatusCode 状态码
200 url定位成功,接下来进行传输
400 请求无法识别
404 url未找到
405 服务器不支持请求
500 未知的服务端错误
503 Server capacity reached
返回值:成功返回非0,失败返回0
virtual BOOL OpenURL(LPCTSTR lpszURL);
头文件:afxhtml.h
功能: 打开一个url
参数: [IN]lpszURL url地址
返回值:成功返回true,失败返回false
BOOL QueryInfo(DWORD dwInfoLevel, LPVOID lpvBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex = NULL) const;
BOOL QueryInfo(DWORD dwInfoLevel, DWORD &dwResult, LPDWORD lpdwIndex = NULL) const;
头文件:afxinet.h
功能: 获取响应头中指定标识的内容
参数: [IN]dwInfoLevel 指定的标识
HTTP_QUERY_MIME_VERSION/HTTP_QUERY_CONTENT_TYPE/HTTP_QUERY_CONTENT_TRANSFER_ENCODING/HTTP_QUERY_CONTENT_ID
/HTTP_QUERY_CONTENT_DESCRIPTION/HTTP_QUERY_CONTENT_LENGTH/HTTP_QUERY_ALLOWED_METHODS/HTTP_QUERY_PUBLIC_METHODS
/HTTP_QUERY_DATE/HTTP_QUERY_EXPIRES/HTTP_QUERY_LAST_MODIFIED/HTTP_QUERY_MESSAGE_ID/HTTP_QUERY_URI/HTTP_QUERY_DERIVED_FROM
/HTTP_QUERY_LANGUAGE/HTTP_QUERY_COST/HTTP_QUERY_WWW_LINK/HTTP_QUERY_PRAGMA/HTTP_QUERY_VERSION/HTTP_QUERY_STATUS_CODE
/HTTP_QUERY_STATUS_TEXT/HTTP_QUERY_RAW_HEADERS/HTTP_QUERY_RAW_HEADERS_CRLF
[OUT]lpvBuffer/dwResult 指定标识的内容
返回值:成功返回true,失败返回false
一个例子(From MSDN):
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();