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 变量:控件 -> 右击 -& ...
随机推荐
- 2019Unite大会
一年一度的Unite大会,在今年(2019)的5月10日准时在上海的国际会议中心盛大举行.本届大会历时三天,由来自全球的Unity公司技术专家.开发者.艺术家和Unity爱好者们齐聚一堂,展示Unit ...
- html扩展调用qq邮箱
总体流程:qq邮箱->设置->账户->邮我(使用邮我) over!over!over!
- CodeForces 689C【二分】
转自: http://blog.csdn.net/qq_26071477/article/details/51892995 #include<stdio.h> typedef long l ...
- 地理位置(navigation.geolocation)与本地存储(seessionStorage、localStorage)
一.地理位置( geolocation ): navigator.geolocation对象: 1.单次请求: //navigator.geolocation.getCurrentPosition( ...
- Html5shiv ---- 让IE低版本浏览器识别并支持HTML5标签
Html5shiv.js是针对IE浏览器的 javaScript 补丁,作用如题 该脚本的下载链接 使用使在head标签中使用script标签引用即可
- Cocoapods在OS X Yosemite上报错的解决方法
今天升级了Mac OS X 10.10-Yosemite以后运行pod install遇到下面的错误: /System/Library/Frameworks/Ruby.framework/Versio ...
- perl 操作文件指针
之前使用perl 脚本写了一个读取文件的小工具,但是由于当时使用的Tie 的方式,在处理大文件时,效率并不十分理想,所以在网上搜索了perl 如何操作文件指针的文章,自己也学习一下,本博客就是学习过程 ...
- 第二十一篇 .NET高级技术之使用多线程(三)
1. 单元模式和Windows Forms 单元模式线程是一个自动线程安全机制, 非常贴近于COM——Microsoft的遗留下的组件对象模型.尽管.NET最大地放弃摆脱了遗留下的模型,但很多时候它 ...
- cmd - 使用curl命令的注意点
前言 最近在cmd中使用curl命令来测试rest api,发现有不少问题,这里记录一下. 在cmd中使用curl命令的注意事项 json不能由单引号包括起来 json数据里的双引号要用反斜杠\转义 ...
- Flask (一) 简介
Flask简介 Flask是一个基于Python实现的Web开发‘微’框架 'MicroFramework' Django是一个重型框架 官方文档: http://flask.pocoo.org/do ...