MFC:AfxParseURL
BOOL AFXAPI AfxParseURL(
LPCTSTR pstrURL,
DWORD& dwServiceType,
CString& strServer,
CString& strObject,
INTERNET_PORT& nPort
);
返回值:
如果成功地解析了URL,则返回非零值。如果URL为空或它不包含已知的Internet服务类型,则为0。
参数:
| pstrURL | 指向包含了要解析的URL的字符串的指针。 | ||||||||||||||||||||||||||||||
| dwServiceType | 指明了Internet服务的类型。可能的取值如下:
|
||||||||||||||||||||||||||||||
| 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的更多相关文章
- VS2010/MFC:模态对话框及其弹出过程
模态对话框及其弹出过程 加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益.趁热打铁,这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎 ...
- MFC:编辑区 Edit 的属性及使用
Edit Control 编辑控件是 MFC 中使用较多的控件之一 1. Edit 的属性 Acccept Files -> True 控件接受拖放文件 Multiline -> True ...
- MFC:位图和图标的设置
一. 图标的设置 加载图标 API函数:AfxGetApp()->LoadIconW(); 2. 显示图标 API函数:SetClassLong(); 函数原型:DWORD WINAPI S ...
- MFC:Tab控件嵌入对话框
1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,声明一个CTabCtrl变量: CTabCtrl m_tab; 变量m_ta ...
- MFC:ID命名和数字约定
今天早上双击一个刚刚编译完成的应用程序,界面刚刚显示,又自动触发了一个菜单事件,打开了一个网页.真的很意外.关闭窗口,再次双击,又自动打开了一个网页,再关闭,再双击,又不自动打开网页了.这是什么情况? ...
- MFC:AfxLoadLibrary-将指定的 DLL 映射到调用进程的地址空间
Visual Studio 2012 - Visual C++ LoadLibrary 和 AfxLoadLibrary 进程调用 LoadLibrary (或 AfxLoadLibrary) 以显式 ...
- MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误
今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...
- MFC:重绘Button,定制CButton,自画CPngButton,求赐教(各种bug包括性能bug)谢谢谢谢
[1.]CPngButton.h(资源是最后图片) #pragma once #include<atlimage.h> #define PNUM 19 #define PLAYTIME 1 ...
- MFC:关联变量
1. 对象(控制)变量(control) a. 数据类型:control 只能创建关联一次 b). control 用来操控控件 c). 创建 control 变量:控件 -> 右击 -& ...
随机推荐
- 【WIP】iOS 网络通讯
创建: 2018/06/05 网络通讯的基础 App Transport Security iOS9以后增加的功能 只允许满足Apple标准的https通信 ● 对ATS进行改动的话发布的审查时有可 ...
- HDU - 1098 - Ignatius's puzzle - ax+by=c
http://acm.hdu.edu.cn/showproblem.php?pid=1098 其实一开始猜测只要验证x=1的时候就行了,但是不知道怎么证明. 题解表示用数学归纳法,假设f(x)成立,证 ...
- 零基础配置Linux服务器环境
详细步骤请走官方通道 over!over!over!
- [Xcode 实际操作]九、实用进阶-(5)使用正则表达式判断格式是否正确
目录:[Swift]Xcode实际操作 本文将演示使用正则表达式判断邮箱的格式是否正确. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...
- Metasploit工具的使用
如果有代理在前面加proxychains msfconsole 进入MSF终端search xxx xxx为要搜索的模块use xxxx 选择要用的攻击模块show options 查看相关设置set ...
- C笔记列表
笔记列表 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明. 要理解指针就要先理解计算机的内存.计算机内存会被 ...
- JToken和JObject有什么区别
JObject 用于操作JSON对象JArray 用语操作JSON数组JValue 表示数组中的值JProperty 表示对象中的属性,以"key/value"形式JT ...
- [筆記]catalan卡特蘭數
前言:希望自己每個星期能發一篇文章,提升一下寫文章的能力?雖然對語文作文毫無幫助但是總比玩遊戲強 所以不務正業的東西就不放在首頁了,有興趣的可以點分類去看 來源:https://www.cnblogs ...
- [BZOJ2251/BJWC2010]外星联络
Description 小 P 在看过电影<超时空接触>(Contact)之后被深深的打动,决心致力于寻找外星人的事业.于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息. ...
- VMware的linux虚拟机实现和windows的文件共享
使用的centos7和windows10,在虚拟机centos7中是root身份.由于是第一次用没有界面的linux,可谓是困难重重…… 一 打开VMware,然后选中你的虚拟机,我的是centos7 ...