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. spown mj

    local function getmjvalnew(key) local keynew = {} local sumnval = 0 for _, v in ipairs(key) do if v& ...

  2. 347. Top K Frequent Elements (sort map)

    Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...

  3. idea ultmate版安装后toolWindows没有database

    点击Configure--->plugins将database勾选

  4. assembly x86(nasm)画三角形等图形的实现(升级版)

    https://www.cnblogs.com/lanclot-/p/10962702.html接上一篇 本来就有放弃的想法,可是有不愿退而求次, 然后大神室友写了一个集海伦公式计算三角形面积, 三点 ...

  5. Android 兼容包

    http://www.cnblogs.com/kissazi2/p/3644848.html 在AndoridManifest.xml文件中可以查看项目最低支持的SDK版本 <uses-sdk ...

  6. Java泛型学习摘抄

  7. activity fragment 传值

    Bundle bundle = new Bundle(); bundle.putString("key","value"); fragment.setArgum ...

  8. js动态实现文本框不可编辑状态

    两种方法: $("#id").attr("readOnly",false); 不可编辑,可以传值 $("#id").attr("d ...

  9. django 之 rest framework

    一 二 三 四 五 六 七 八

  10. Tourists Codeforces - 487E

    https://codeforces.com/contest/487/problem/E http://uoj.ac/problem/30 显然割点走过去就走不回来了...可以看出题目跟点双有关 有一 ...