diff --git a/build/config/rust/BUILD.gn b/build/config/rust/BUILD.gn
index 0645992..4635a9f 100644
--- a/build/config/rust/BUILD.gn
+++ b/build/config/rust/BUILD.gn
@@ -142,7 +142,6 @@
     "//src/connectivity/location/*",
     "//src/connectivity/lowpan/*",
     "//src/connectivity/management/*",
-    "//src/connectivity/network/http-client/*",
     "//src/connectivity/network/lib/*",
     "//src/connectivity/network/netstack/*",
     "//src/connectivity/network/netstack3/*",
diff --git a/src/connectivity/network/http-client/BUILD.gn b/src/connectivity/network/http-client/BUILD.gn
index 1fb4727..ba800f0 100644
--- a/src/connectivity/network/http-client/BUILD.gn
+++ b/src/connectivity/network/http-client/BUILD.gn
@@ -31,6 +31,8 @@
   ]
 
   sources = [ "src/main.rs" ]
+
+  configs -= [ "//build/config/rust:allow_unused_results" ]
 }
 
 # TODO(fxbug.dev/72870): Remove v1 component once integration tests are no
diff --git a/src/connectivity/network/http-client/integration/BUILD.gn b/src/connectivity/network/http-client/integration/BUILD.gn
index 7613c49..809246d 100644
--- a/src/connectivity/network/http-client/integration/BUILD.gn
+++ b/src/connectivity/network/http-client/integration/BUILD.gn
@@ -19,6 +19,8 @@
   ]
 
   sources = [ "src/lib.rs" ]
+
+  configs -= [ "//build/config/rust:allow_unused_results" ]
 }
 
 # TODO(fxbug.dev/71088): Combine `test-driver` and the test root once
diff --git a/src/connectivity/network/http-client/src/main.rs b/src/connectivity/network/http-client/src/main.rs
index 5a47e34..8932e47 100644
--- a/src/connectivity/network/http-client/src/main.rs
+++ b/src/connectivity/network/http-client/src/main.rs
@@ -6,13 +6,14 @@
     anyhow::{Context as _, Error},
     fidl_fuchsia_net_http as net_http,
     fuchsia_async::{self as fasync, TimeoutExt as _},
-    fuchsia_component::server::ServiceFs,
+    fuchsia_component::server::{ServiceFs, ServiceFsDir},
     fuchsia_hyper as fhyper,
     fuchsia_zircon::{self as zx, AsHandleRef},
     futures::{future::BoxFuture, prelude::*, StreamExt},
     hyper,
     log::{debug, error, info, trace},
     std::convert::TryFrom,
+    std::str::FromStr as _,
 };
 
 static MAX_REDIRECTS: u8 = 10;
@@ -194,21 +195,22 @@
 
 impl Loader {
     async fn new(req: net_http::Request) -> Result<Self, Error> {
-        let method =
-            hyper::Method::from_bytes(req.method.unwrap_or_else(|| "GET".to_string()).as_bytes())?;
-        if let Some(url) = req.url {
+        let net_http::Request { method, url, headers, body, deadline, .. } = req;
+        let method = method.as_ref().map(|method| hyper::Method::from_str(method)).transpose()?;
+        let method = method.unwrap_or(hyper::Method::GET);
+        if let Some(url) = url {
             let url = hyper::Uri::try_from(url)?;
-            let mut headers = hyper::HeaderMap::new();
-            if let Some(h) = req.headers {
-                for header in &h {
-                    headers.insert(
-                        hyper::header::HeaderName::from_bytes(&header.name)?,
-                        hyper::header::HeaderValue::from_bytes(&header.value)?,
-                    );
-                }
-            }
+            let headers = headers
+                .unwrap_or_else(|| vec![])
+                .into_iter()
+                .map(|net_http::Header { name, value }| {
+                    let name = hyper::header::HeaderName::from_bytes(&name)?;
+                    let value = hyper::header::HeaderValue::from_bytes(&value)?;
+                    Ok((name, value))
+                })
+                .collect::<Result<hyper::HeaderMap, Error>>()?;
 
-            let body = match req.body {
+            let body = match body {
                 Some(net_http::Body::Buffer(buffer)) => {
                     let mut bytes = vec![0; buffer.size as usize];
                     buffer.vmo.read(&mut bytes, 0)?;
@@ -227,8 +229,7 @@
                 None => Vec::new(),
             };
 
-            let deadline = req
-                .deadline
+            let deadline = deadline
                 .map(|deadline| fasync::Time::from_nanos(deadline))
                 .unwrap_or_else(|| fasync::Time::after(DEFAULT_DEADLINE_DURATION));
 
@@ -410,8 +411,8 @@
 async fn main() -> Result<(), Error> {
     fuchsia_syslog::init()?;
     let mut fs = ServiceFs::new();
-    fs.dir("svc").add_fidl_service(spawn_server);
-    fs.take_and_serve_directory_handle()?;
+    let _: &mut ServiceFsDir<'_, _> = fs.dir("svc").add_fidl_service(spawn_server);
+    let _: &mut ServiceFs<_> = fs.take_and_serve_directory_handle()?;
     let () = fs.collect().await;
     Ok(())
 }
