QUrl
来源:互联网 发布:速冻饺子 知乎 编辑:程序博客网 时间:2024/05/29 12:58
简述: QUrl类提供了一个方便的接口使用Urls,它可以构造解析编码和未编码形式的URls。QUrl也支持国际化域名(IDNs)。
1、创建对象
QUrl url("https://www.baidu.com/");或QUrl url;url.setUrl("https://www.baidu.com/");URls形式有两种:编码或未编码。未编码形式适用于显示给用户,编码形式通常会发送到一个web服务器。
2、基本用法
void setScheme(const QString &scheme);QString scheme() const;void setAuthority(const QString &authority, ParsingMode mode = TolerantMode);QString authority(ComponentFormattingOptions options = PrettyDecoded) const;void setUserInfo(const QString &userInfo, ParsingMode mode = TolerantMode);QString userInfo(ComponentFormattingOptions options = PrettyDecoded) const;void setUserName(const QString &userName, ParsingMode mode = DecodedMode);QString userName(ComponentFormattingOptions options = FullyDecoded) const;void setPassword(const QString &password, ParsingMode mode = DecodedMode);QString password(ComponentFormattingOptions = FullyDecoded) const;void setHost(const QString &host, ParsingMode mode = DecodedMode);QString host(ComponentFormattingOptions = FullyDecoded) const;QString topLevelDomain(ComponentFormattingOptions options = FullyDecoded) const;void setPort(int port);int port(int defaultPort = -1) const;void setPath(const QString &path, ParsingMode mode = DecodedMode);QString path(ComponentFormattingOptions options = FullyDecoded) const;QString fileName(ComponentFormattingOptions options = FullyDecoded) const;bool hasQuery() const;void setQuery(const QString &query, ParsingMode mode = TolerantMode);void setQuery(const QUrlQuery &query);QString query(ComponentFormattingOptions = PrettyDecoded) const;bool hasFragment() const;QString fragment(ComponentFormattingOptions options = PrettyDecoded) const;void setFragment(const QString &fragment, ParsingMode mode = TolerantMode);
3、URL格式
3.1 Scheme
scheme指定使用的传输协议,它由 URL 起始部分的一个或多个 ASCII 字符表示。scheme 只能包含 ASCII 字符,对输入不做转换或解码,必须以 ASCII 字母开始。
scheme 严格兼容 RFC 3986:scheme = ALPHA *( ALPHA / DIGIT / “+” / “-” / “.”)
QUrl url;url.setScheme("ftp");
传输协议类型如下表:
协议描述file资源是本地计算机上的文件。格式:file:///,注意后边应是三个斜杠ftp通过 FTP 访问资源。格式:FTP://gopher通过 Gopher 协议访问该资源http通过 HTTP 访问该资源。格式:HTTP://https通过安全的 HTTPS 访问该资源。格式:HTTPS://mailto资源为电子邮件地址,通过 SMTP 访问。格式:mailto:MMS通过支持MMS(流媒体)协议的播放该资源(代表软件:Windows Media Player)。格式:MMS://ed2k通过支持ed2k(专用下载链接)协议的P2P软件访问该资源(代表软件:电驴)。格式:ed2k://Flashget通过支持Flashget:(专用下载链接)协议的P2P软件访问该资源(代表软件:快车)。格式:Flashget://thunder通过支持thunder(专用下载链接)协议的 P2P 软件访问该资源(代表软件:迅雷)。格式:thunder://news通过 NNTP 访问该资源3.2 Authority
URL 的 authority 由用户信息,主机名和端口组成。所有这些元素都是可选的,即使 authority 为空,也是有效的。
格式:username:password@hostname:port
用户信息和主机名由 " @ " 分割,主机和端口由 ":" 分割。如果用户信息为空,则 " @ " 必须被省略。如果端口为空,允许使用 " :"
host:指存放资源的服务器的域名系统(DNS)主机名或 IP地址。port:整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如HTTP的默认端口80。如果输入时省略,则使用默认端口号。
3.3 user info
user info 指用户信息,是URL中 authority 可选的一部分。用户信息包括用户名和一个可选密码,由 " : " 分割 。如果密码为空, ": " 须被省略。
3.4 path
由零个或多个 / 隔开的字符串,一般用来表示主机上的一个目录或文件地址。 在 authority 之后,query之前。
对于没有层级的 schemes , 路径将是 scheme 后的所有部分,如下:
3.5 query
query 指查询字符串,可选,用于给动态网页(例如:使用 CGI、ISAPI、PHP/JSP/ASP/ASP、.NET 等技术制作的网页)传递参数,可有数个参数,用 & 隔开,每个参数的名和值用 =隔开。
3.6 fragment
fragment 指定网络资源中的片段。是URL的最后一部分,由 #后面的跟的字符串表示。通常指的是用于HTTp页面上的某个链接或点
4、 其他应用
bool isValid()const;//如果返回false,应该在继续之前clear()URL,或通过setUrl()传递一个新的URLQTcpSocket sock;sock.connectToHost(url.host(),url.port(80));//通过socket连接到一个指定QUrl包含的主机、端口QUrl url1=QUrl::fromLocalFile("E:\\Qt.txt");//使用fromLocalFile()构造一个QUrl,通过传递一个本地文件路径//toLocalFile()将一个URL转换为本地文件路径。QUrl url2("http://qt-project.org/support/file.html");url2.fileName();//返回文件的名称。若url以斜杠结束,文件的名称是空的。若路径不包含任何斜线,完全返回作为文件名[static]QUrl fromUserInput(const QString &userInput);//返回从一个用户提供的用户输入的字符串的一个有效的URLQUrl resolved(const QUrl &relative)const Q_REQUIRED_RESULT;//相对的URL可被转变通过将它作为参数传递给resolved(),会返回一个绝对URL//如果relative不是一个相对URL,该函数会直接返回relative。bool isRelative()const;//判断url是否相对bool isParentOf(const QUrl &url)const;//判断一个URL是否是另一个的parent
//处理编码和解码的百分比static QString fromPercentEncoding(const QByteArray&);static QByteArray toPercentEncoding(const QString&,const QByteArray &exclude=QByteArray(),const QByteArray &include=QByteArray());
- QUrl
- QUrl详解
- QUrl详解
- QUrl介绍
- QUrl 和 QFile
- QT 5.0.2 QUrl
- QUrl中文路径问题
- Qt之QUrl
- Qt之QUrl
- Qt之QUrl
- 通过Qt打开网页--QUrl
- QT 4.8.0 QURL的Bug??
- QURL中的要写入中文怎么处理
- 使用Qt打开外部文件,调用外部程序(QDesktopServices,QUrl ,QProcess,QProcess)
- Qt解决QUrl含有中文或特殊字符无法下载的问题
- Qt中QFtp和QURL获取带有中文的文件名称出现乱码的解决方法
- QNetworkAccessManager 实现FTP上传功能,解决 文件名是中文,QUrl含有中文路径 不能上传的问题
- hadoop集群搭建教程
- 基于ichartjs图形库在android上使用HTML动态实现3D柱形图
- C++学习笔记
- 静态工厂方法优缺点个人理解
- 欢迎使用CSDN-markdown编辑器
- QUrl
- 基于ichartjs图形库在android上使用HTML动态实现多数据源的面积图
- var是什么
- 基于ichartjs在android上使用HTML5实现各种图表的类库
- 蓝桥 特殊排列
- 为什么有的人工作多年还是老样子
- 解决ajax的跨域问题
- android从放弃到坚持放弃第三课(上)
- tensorflow入门之实现单隐层的神经网络