diff --git a/http/http_connection.hpp b/http/http_connection.hpp
index ae0477a..3720d9d 100644
--- a/http/http_connection.hpp
+++ b/http/http_connection.hpp
@@ -16,6 +16,7 @@
 #include <boost/beast/core/flat_static_buffer.hpp>
 #include <boost/beast/ssl/ssl_stream.hpp>
 #include <boost/beast/websocket.hpp>
+#include <boost/url/url_view.hpp>
 #include <json_html_serializer.hpp>
 #include <security_headers.hpp>
 #include <ssl_key_handler.hpp>
@@ -336,15 +337,18 @@
                         << "." << thisReq.version() % 10 << ' '
                         << thisReq.methodString() << " " << thisReq.target()
                         << " " << thisReq.ipAddress;
-        try
+
+        boost::urls::error_code ec;
+        req->urlView = boost::urls::parse_relative_ref(
+            boost::urls::string_view(req->target().data(),
+                                     req->target().size()),
+            ec);
+        if (ec)
         {
-            thisReq.urlView = boost::urls::url_view(thisReq.target());
-            thisReq.url = thisReq.urlView.encoded_path();
+            return;
         }
-        catch (std::exception& p)
-        {
-            BMCWEB_LOG_ERROR << p.what();
-        }
+        req->url = std::string_view(req->urlView.encoded_path().data(),
+                                    req->urlView.encoded_path().size());
 
         res.setCompleteRequestHandler(nullptr);
         res.isAliveHelper = [this]() -> bool { return isAlive(); };
@@ -547,16 +551,21 @@
 
                 boost::beast::http::verb method = parser->get().method();
                 readClientIp();
-                try
+                boost::urls::error_code uriEc;
+                boost::urls::string_view uriStringView(
+                    parser->get().target().data(),
+                    parser->get().target().size());
+                BMCWEB_LOG_DEBUG << "Parsing URI: " << uriStringView;
+                req->urlView =
+                    boost::urls::parse_relative_ref(uriStringView, uriEc);
+                if (uriEc)
                 {
-                    req->urlView =
-                        boost::urls::url_view(parser->get().target());
-                    req->url = req->urlView.encoded_path();
+                    BMCWEB_LOG_ERROR << "Failed to parse URI "
+                                     << uriEc.message();
+                    return;
                 }
-                catch (std::exception& p)
-                {
-                    BMCWEB_LOG_ERROR << p.what();
-                }
+                req->url = std::string_view(req->urlView.encoded_path().data(),
+                                            req->urlView.encoded_path().size());
 
                 boost::asio::ip::address ip;
                 if (getClientIp(ip))
@@ -573,7 +582,7 @@
                     startDeadline(loggedInAttempts);
                     BMCWEB_LOG_DEBUG << "Starting slow deadline";
 
-                    req->urlParams = req->urlView.params();
+                    req->urlParams = req->urlView.query_params();
 
 #ifdef BMCWEB_ENABLE_DEBUG
                     std::string paramList = "";
diff --git a/http/http_request.hpp b/http/http_request.hpp
index fecb9de..da3d4e0 100644
--- a/http/http_request.hpp
+++ b/http/http_request.hpp
@@ -22,7 +22,7 @@
     boost::beast::http::fields& fields;
     std::string_view url{};
     boost::urls::url_view urlView{};
-    boost::urls::url_view::params_type urlParams{};
+    boost::urls::query_params_view urlParams{};
     bool isSecure{false};
 
     const std::string& body;
