diff --git a/client/src/Plugin/QueueWorker/CollectClientQueueWorker.php b/client/src/Plugin/QueueWorker/CollectClientQueueWorker.php
index d1a35d8..d62c4b3 100644
--- a/client/src/Plugin/QueueWorker/CollectClientQueueWorker.php
+++ b/client/src/Plugin/QueueWorker/CollectClientQueueWorker.php
@@ -16,10 +16,9 @@ use Drupal\Core\Queue\QueueWorkerBase;
 use Drupal\Core\Queue\SuspendQueueException;
 use GuzzleHttp\ClientInterface;
 use GuzzleHttp\Exception\RequestException;
-use GuzzleHttp\Message\ResponseInterface;
+use Psr\Http\Message\ResponseInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Serializer\SerializerInterface;
 
 /**
@@ -231,7 +230,7 @@ class CollectClientQueueWorker extends QueueWorkerBase implements ContainerFacto
     // Special support for CollectJSON field definition.
     try {
       foreach ($this->getTransferObjects($item) as $item_values) {
-        $response = $this->httpClient->post($url, array_merge($item_values, $options));
+        $response = $this->httpClient->request('POST', $url, array_merge($item_values, $options));
         if ($response->getStatusCode() != 201) {
           throw new \Exception('Expected status code 201 Created, got ' . $response->getStatusCode() . ' ' . $response->getReasonPhrase() . ' when submitting item to ' . $url . '.', 0);
         }
@@ -263,7 +262,7 @@ class CollectClientQueueWorker extends QueueWorkerBase implements ContainerFacto
    *
    * @param string $cache_key
    *   The entity cache key.
-   * @param \GuzzleHttp\Message\ResponseInterface $response
+   * @param \Psr\Http\Message\ResponseInterface $response
    *   The response.
    */
   protected function cacheUuid($cache_key, ResponseInterface $response) {
@@ -282,8 +281,12 @@ class CollectClientQueueWorker extends QueueWorkerBase implements ContainerFacto
    */
   protected function parseResponse(ResponseInterface $response, $property) {
     try {
+      if (!$response->getBody()) {
+        return FALSE;
+      }
+
       // Decode received data.
-      $json = $response->json();
+      $json = json_decode($response->getBody()->getContents(), TRUE);
 
       if ($property == 'uuid') {
         return isset($json['data'][$property]) ? $json['data'][$property] : FALSE;
diff --git a/client/tests/src/Unit/Plugin/QueueWorker/QueueWorkerTest.php b/client/tests/src/Unit/Plugin/QueueWorker/QueueWorkerTest.php
index 6dca1e9..777b591 100644
--- a/client/tests/src/Unit/Plugin/QueueWorker/QueueWorkerTest.php
+++ b/client/tests/src/Unit/Plugin/QueueWorker/QueueWorkerTest.php
@@ -215,10 +215,10 @@ EOF;
     );
     $url = 'http://example.com/collect/api/v1/submissions';
     $location = 'http://server.collect.dev/collect/api/v1/submissions/f67c88c9-1608-4f47-8291-4e35411af61f';
-    $response = $this->getMock('GuzzleHttp\Message\ResponseInterface');
+    $response = $this->getMock('Psr\Http\Message\ResponseInterface');
     $this->httpClient->expects($this->once())
-      ->method('post')
-      ->with($url, $options)
+      ->method('request')
+      ->with('POST', $url, $options)
       ->will($this->returnValue($response));
 
     $response->expects($this->once())
diff --git a/collect.services.yml b/collect.services.yml
index c5c9ef4..81a2e93 100644
--- a/collect.services.yml
+++ b/collect.services.yml
@@ -25,4 +25,4 @@ services:
     arguments: ['@request_stack', '@serializer', '@entity.manager', '@plugin.manager.collect.model']
   collect.fetch_web_resource:
     class: Drupal\collect\FetchWebResource
-    arguments: ['@http_client', '@entity.manager', '@plugin.manager.collect.model']
+    arguments: ['@http_client_factory', '@entity.manager', '@plugin.manager.collect.model']
diff --git a/src/FetchWebResource.php b/src/FetchWebResource.php
index f89c2b3..35c15b8 100644
--- a/src/FetchWebResource.php
+++ b/src/FetchWebResource.php
@@ -11,8 +11,9 @@ use Drupal\collect\Entity\Container;
 use Drupal\collect\Model\ModelManagerInterface;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\Http\Client;
+use Drupal\Core\Http\ClientFactory;
 use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Psr7\Request;
 
 /**
  * Fetches a web resource into collect container.
@@ -30,11 +31,11 @@ class FetchWebResource {
   const MIMETYPE = 'application/json';
 
   /**
-   * The http client.
+   * The HTTP client to fetch the web resource with.
    *
-   * @var \Drupal\Core\Http\Client $httpClient
+   * @var \Drupal\Core\Http\ClientFactory $httpClientFactory
    */
-  protected $httpClient;
+  protected $httpClientFactory;
 
   /**
    * The entity manager service.
@@ -53,15 +54,15 @@ class FetchWebResource {
   /**
    * Set up a new FetchWebResource instance.
    *
-   * @param \Drupal\Core\Http\Client $http_client
-   *   The http client.
+   * @param \Drupal\Core\Http\ClientFactory $http_client_factory
+   *   A Guzzle client object.
    * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
    *    The entity manager service.
    * @param \Drupal\collect\Model\ModelManagerInterface $model_manager
    *    The injected model manager.
    */
-  public function __construct(Client $http_client, EntityManagerInterface $entity_manager, ModelManagerInterface $model_manager) {
-    $this->httpClient = $http_client;
+  public function __construct(ClientFactory $http_client_factory, EntityManagerInterface $entity_manager, ModelManagerInterface $model_manager) {
+    $this->httpClientFactory = $http_client_factory;
     $this->entityManager = $entity_manager;
     $this->modelManager = $model_manager;
   }
@@ -83,18 +84,19 @@ class FetchWebResource {
     if (!isset($schema_uri)) {
       $schema_uri = static::SCHEMA_URI;
     }
-
-    $request = $this->httpClient->createRequest('GET', $url, [
-      'headers' => [
-        'Accept' => $accept_header,
-        'Accept-Charset' => 'UTF-8, *'
-      ]
-    ]);
-    $request_headers = $request->getHeaders();
-
+    $options['headers'] = [
+      'Accept' => $accept_header,
+      'Accept-Charset' => 'UTF-8, *'
+    ];
+    $request = new Request('GET', $url, $options);
+    $http_client = $this->httpClientFactory->fromOptions();
     try {
-      // Get response.
-      $response = $this->httpClient->send($request);
+      // Send an HTTP request and get a response.
+      $response = $http_client->send($request);
+      // Get request headers.
+      foreach (array_merge($options['headers'], $http_client->getConfig('headers')) as $key => $value) {
+        $request_headers[$key] = [$value];
+      }
     }
     catch (RequestException $re) {
       if ($re->hasResponse()) {
