我正在使用 QUrl 构建字符串 url。假设我需要获取“rtsp://camera.lan/stream”网址。
下面的代码给出了“rtsp://camera.lan”url:
QUrl url;
url.setScheme("rtsp");
url.setHost("camera.lan");
auto url_str = url.toString().toStdString(); // "rtsp://camera.lan"
Run Code Online (Sandbox Code Playgroud)
这给出了“rtsp:camera.lan”网址:
url.setScheme("rtsp");
url.setPath("camera.lan");
auto url_str = url.toString().toStdString(); // "rtsp:camera.lan"
Run Code Online (Sandbox Code Playgroud)
但如果我设置主机路径,则它无效:
url.setScheme("rtsp");
url.setHost("camera.lan");
url.setPath("stream");
auto url_str = url.toString().toStdString(); // gives ""
bool url_is_valid = url.isValid(); // false
Run Code Online (Sandbox Code Playgroud)
文档说,
对于非分层方案,路径将是方案声明之后的所有内容
但是如果我需要指定路径和权限怎么办?
尝试通过调用QUrl::setPath()如下函数来设置路径:
url.setPath("/stream"); // Note the slash symbol.
Run Code Online (Sandbox Code Playgroud)
反而。它会给你预期的结果,即rtsp://camera.lan/stream。