BOOL AFXAPI AfxParseURL(
     LPCTSTR pstrURL,
     DWORD& dwServiceType,
     CString& strServer,
     CString& strObject,
     INTERNET_PORT& nPort
    );

返回值:
如果成功地解析了URL,则返回非零值。如果URL为空或它不包含已知的Internet服务类型,则为0。

参数:

pstrURL 指向包含了要解析的URL的字符串的指针。
dwServiceType 指明了Internet服务的类型。可能的取值如下:

· 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
strServerURL 中服务类型后的第一个部分。
strObjectURL 涉及的对象(可能为空)。
nPort 如果存在,则从URL的服务器或对象部分搜索出来。

说明:
这个全局函数被用于CInternetSession::OpenURL。它解析一个URL字符串,返回服务的类型以及其它的内容。
例如,AfxParseURL解析一个如下形式的URL:
service://server/dir/dir/object.ext:port,返回的内容如下:
strServer == "server"
strObject == "/dir/dir/object/object.ext"
nPort == #port
dwServiceType == #service

注意:为了调用这个函数,你必须在项目中包含AFXINET.H。

用例:

BOOL PostSubmit(CString strUrl,const CString&strPara, CString&strContent)
{
BOOL bRet=FALSE; CString strInfo; try
{
CString strServer, strObject, strHeader, strRet;
unsigned short nPort;
DWORD dwServiceType; strInfo.Format("strUrl is %s\n",strUrl);
printf("strUrl is %s\n",strUrl); strInfo.Format("strPara is %s\n",strPara);
printf("strPara is %s\n",strPara); if(!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))//不是有效有网络地址!
{
g_DebugMsg.Sprintf("不是有效有网络地址!\n"); return FALSE;
} strInfo.Format("dwServiceType:%d\n",dwServiceType);
printf("dwServiceType:%d\n",dwServiceType); strInfo.Format("strServer:%s\n",strServer);
printf("strServer:%s\n",strServer); strInfo.Format("strObject:%s\n",strObject);
printf("strObject:%s\n",strObject); strInfo.Format("nPort:%d\n",nPort);
printf("nPort:%d\n",nPort); CInternetSession sess(_T("faxsms")); CHttpFile* pFile= NULL; CHttpConnection *pServer= sess.GetHttpConnection(strServer, nPort);
if(pServer== NULL)//连接服务器失败!
{
strInfo.Format("%s\n","连接服务器失败!");
g_DebugMsg.Sprintf("连接服务器失败!\n"); return FALSE;
} pFile= pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject,NULL,,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
if(pFile== NULL)//找不到网络地址
{
g_DebugMsg.Sprintf("找不到网络地址!\n"); sess.Close();
return FALSE;
} pFile-> AddRequestHeaders("Content-Type: application/x-www-form-urlencoded"); // pFile-> AddRequestHeaders("Content-Type: HappiGo/Process"); // pFile-> AddRequestHeaders("Accept: */*"); if (!pFile->SendRequest(NULL,,(LPTSTR)(LPCTSTR)strPara, strPara.GetLength()))
{
g_DebugMsg.Sprintf("SendRequest error!\n"); pFile->Close();
sess.Close(); return FALSE;
} CString strSentence;
DWORD dwStatus;
DWORD dwBuffLen=sizeof(dwStatus);
BOOL bSuccess= pFile->QueryInfo(HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,&dwStatus,&dwBuffLen); //if( bSuccess&& dwStatus>=200&& dwStatus<300)
if( bSuccess&& dwStatus==)
{
strInfo.Format("dwStatus:%d\n",dwStatus);
printf("dwStatus:%d\n",dwStatus); char buffer[];
memset(buffer,,); int nReadCount=; while((nReadCount= pFile->Read(buffer,))>)
{
strContent+= buffer;
memset(buffer,,);
} //strInfo.Format("strContent:%s\n",strContent);
//g_DebugMsg.Sprintf("return Content :%s\n",strContent);
bRet=TRUE;
}
else//错误
{
if (bSuccess&& dwStatus> && dwStatus<)
{
char buffer[];
memset(buffer,,); int nReadCount=; while((nReadCount= pFile->Read(buffer,))>)
{
strContent+= buffer;
memset(buffer,,);
} strInfo.Format("strContent:%s\n",strContent);
g_DebugMsg.Sprintf("return Content :%s\n",strContent);
} bRet=FALSE;
} pFile->Close();
sess.Close(); }
catch (CInternetException *e)
{
g_DebugMsg.Sprintf("ERROR001 :error code is %ld\n",e->m_dwError); bRet=FALSE; }
catch (...)
{
g_DebugMsg.Sprintf("Unknown Error\n"); bRet=FALSE;
} return bRet;
}

MFC:AfxParseURL的更多相关文章

  1. VS2010/MFC:模态对话框及其弹出过程

    模态对话框及其弹出过程 加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益.趁热打铁,这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎 ...

  2. MFC:编辑区 Edit 的属性及使用

    Edit Control 编辑控件是 MFC 中使用较多的控件之一 1. Edit 的属性 Acccept Files -> True 控件接受拖放文件 Multiline -> True ...

  3. MFC:位图和图标的设置

    一. 图标的设置 加载图标   API函数:AfxGetApp()->LoadIconW(); 2. 显示图标 API函数:SetClassLong(); 函数原型:DWORD WINAPI S ...

  4. MFC:Tab控件嵌入对话框

    1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,声明一个CTabCtrl变量: CTabCtrl m_tab; 变量m_ta ...

  5. MFC:ID命名和数字约定

    今天早上双击一个刚刚编译完成的应用程序,界面刚刚显示,又自动触发了一个菜单事件,打开了一个网页.真的很意外.关闭窗口,再次双击,又自动打开了一个网页,再关闭,再双击,又不自动打开网页了.这是什么情况? ...

  6. MFC:AfxLoadLibrary-将指定的 DLL 映射到调用进程的地址空间

    Visual Studio 2012 - Visual C++ LoadLibrary 和 AfxLoadLibrary 进程调用 LoadLibrary (或 AfxLoadLibrary) 以显式 ...

  7. MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误

    今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...

  8. MFC:重绘Button,定制CButton,自画CPngButton,求赐教(各种bug包括性能bug)谢谢谢谢

    [1.]CPngButton.h(资源是最后图片) #pragma once #include<atlimage.h> #define PNUM 19 #define PLAYTIME 1 ...

  9. MFC:关联变量

    1. 对象(控制)变量(control) a. 数据类型:control 只能创建关联一次 b).    control 用来操控控件 c). 创建 control 变量:控件 -> 右击 -& ...

随机推荐

  1. E20180607-hm

    duplicate v. 重复; 复制; 复印;  adj. 复制的; 副本的; 完全一样的;        n. 副本; 完全一样的东西; 复制品; adjacent adj. 相邻; 邻近的,毗邻 ...

  2. 适合新手看的超详细CentOS Linux 7 安装Tomcat8过程

    非常详细的安装Tomcat8的步骤,适合新手学习.废话不多说,直接干! 前提条件 1. 已有可直接连接的CentOS7系统 2. CentOS7系统已安装Java JDK 8 下载Tomcat8 下载 ...

  3. CZGL.AliIoTClient 文档:说明

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  4. 基于nginx的配置网站密码认证

    在nginx配置服务中,创建访问网站密码认证. 1)需要ngx_http_auth_basic_module模块 语法: Syntax: auth_basic string | off; Defaul ...

  5. 单片机的C语言中位操作用法

    在对单处机进行编程的过程中,对位的操作是经常遇到的.C51对位的操控能力是非常强大的.从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点.这也是在各个领域中都可以看到C的重要 ...

  6. 1-zookeeper基本原理和使用

    1 分布式应用 1.1 分布式系统原理 在一个网络中,每台服务器上各跑一个应用,然后彼此连接起来就组成一套系统.比如提供完成的游戏服务,需要有认证应用,道具应用,积分应用,游戏主应用等,应用并非跑在一 ...

  7. Codeforces 1114E(简单交互)

    这里有一道老实题,大家快来踩爆它! 交互题:根据你的输出决定下一次的输入. 请听题: 管理员有个乱序数列(举例:{14, 24, 9, 19}),排序以后是个等差数列({9, 14, 19, 24}) ...

  8. 基于阿里云SLB/ESS/EIP/ECS/VPC的同城高可用方案演练

    今天基于阿里云SLB/ESS/EIP/ECS/VPC等产品进行了一次同城高可用方案演练: 基本步骤如下: 1. 在华东1创建VPC网络VPC1,在华东1可用区B和G各创建一个虚拟交换机vpc1_swi ...

  9. 本地连接远程Oracle数据库

    由于项目开发测试,需要在本地连接远程的Oracle数据库 之前搭过环境,但是重装了系统,现在又重新装一遍 软件安装 连接远程Oracle需要两个软件: 一个Oracle客户端,instantclien ...

  10. ACM学习大纲(转)

    1 推荐题库 •http://ace.delos.com/usaco/ 美国的OI 题库,如果是刚入门的新手,可以尝试先把它刷通,能够学到几乎全部的基础算法极其优化,全部的题解及标程还有题目翻译可以b ...