async def _request(self, method, path, websocket=False, authenticate=True,
                        body=None, body_producer=None, on_message_callback=None, **kwargs):
                headers = {}
+               query_args = {}
 
                # Make absolute URL
                url = urllib.parse.urljoin(self.url, path)
                if websocket and url.startswith("https://"):
                        url = url.replace("https://", "wss://")
 
-               # Convert any query arguments
-               query_args = urllib.parse.urlencode(kwargs)
+               # Filter all query arguments
+               for arg in kwargs:
+                       # Skip anything that is None
+                       if kwargs[arg] is None:
+                               continue
+
+                       # Add to query arguments
+                       query_args[arg] = kwargs[arg]
+
+               # Encode query arguments
+               query_args = urllib.parse.urlencode(query_args, doseq=True)
 
                # Add query arguments
                if method in ("GET", "PUT", "DELETE"):