diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index c2429d9..ce54f88 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -268,8 +268,6 @@
     if type(value) == type('') or type(value) == type(u''):
       return value
     else:
-      if value is None:
-        raise ValueError('String parameters can not be None.')
       return str(value)
   elif schema_type == 'integer':
     return str(int(value))
@@ -443,10 +441,17 @@
 
     def method(self, **kwargs):
       # Don't bother with doc string, it will be over-written by createMethod.
+
       for name in kwargs.iterkeys():
         if name not in argmap:
           raise TypeError('Got an unexpected keyword argument "%s"' % name)
 
+      # Remove args that have a value of None.
+      keys = kwargs.keys()
+      for name in keys:
+        if kwargs[name] is None:
+          del kwargs[name]
+
       for name in required_params:
         if name not in kwargs:
           raise TypeError('Missing required parameter "%s"' % name)
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 8d45e2d..8d8effd 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -136,6 +136,13 @@
     except TypeError, e:
       self.assertTrue('Missing' in str(e))
 
+    # Missing required parameters even if supplied as None.
+    try:
+      plus.activities().list(collection=None, userId=None)
+      self.fail()
+    except TypeError, e:
+      self.assertTrue('Missing' in str(e))
+
     # Parameter doesn't match regex
     try:
       plus.activities().list(collection='not_a_collection_name', userId='me')
@@ -193,15 +200,14 @@
     self.assertEqual(q['trace'], ['html'])
     self.assertEqual(q['fields'], ['description'])
 
-  def test_string_params_none_is_invalid(self):
+  def test_string_params_value_of_none_get_dropped(self):
     http = HttpMock(datafile('zoo.json'), {'status': '200'})
     zoo = build('zoo', 'v1', http)
-    # String isn't None
-    try:
-      request = zoo.query(trace=None, fields='description')
-      self.fail()
-    except ValueError, e:
-      self.assertTrue('None' in str(e))
+    request = zoo.query(trace=None, fields='description')
+
+    parsed = urlparse.urlparse(request.uri)
+    q = parse_qs(parsed[4])
+    self.assertFalse('trace' in q)
 
   def test_model_added_query_parameters(self):
     http = HttpMock(datafile('zoo.json'), {'status': '200'})
