网络编程中常用的一些函数

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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值