Index: pyamf/tests/remoting/test_client.py
===================================================================
--- pyamf/tests/remoting/test_client.py	(revision 1464)
+++ pyamf/tests/remoting/test_client.py	(working copy)
@@ -4,7 +4,7 @@
 # See LICENSE for details.
 
 """
-Test for Remoting client.
+Tests for Remoting client.
 
 @since: 0.1.0
 """
@@ -370,14 +370,15 @@
         gw.connection = dc
 
         dc.tc = self
-        dc.expected_headers = {'Content-Type': 'application/x-amf'}
+        dc.expected_headers = {'Content-Type': remoting.CONTENT_TYPE,
+                               'User-Agent': client.DEFAULT_USER_AGENT}
 
         service = gw.getService('baz', auto_execute=False)
         wrapper = service.gak()
 
         response = DummyResponse(200, '\x00\x00\x00\x00\x00\x01\x00\x0b/1/onRe'
             'sult\x00\x04null\x00\x00\x00\x00\x00\x02\x00\x05hello', {
-            'Content-Type': 'application/x-amf', 'Content-Length': 50})
+            'Content-Type': remoting.CONTENT_TYPE, 'Content-Length': 50})
         response.tc = self
 
         dc.expected_url = '/x/y/z'
@@ -392,7 +393,7 @@
 
         response = DummyResponse(200, '\x00\x00\x00\x00\x00\x01\x00\x0b/2/onRe'
             'sult\x00\x04null\x00\x00\x00\x00\x00\x02\x00\x05hello', {
-            'Content-Type': 'application/x-amf'})
+            'Content-Type': remoting.CONTENT_TYPE})
         response.tc = self
 
         dc.expected_url = '/x/y/z'
@@ -408,7 +409,8 @@
         gw.connection = dc
 
         dc.tc = self
-        dc.expected_headers = {'Content-Type': 'application/x-amf'}
+        dc.expected_headers = {'Content-Type': remoting.CONTENT_TYPE,
+                               'User-Agent': client.DEFAULT_USER_AGENT}
 
         baz = gw.getService('baz', auto_execute=False)
         spam = gw.getService('spam', auto_execute=False)
@@ -418,7 +420,7 @@
         response = DummyResponse(200, '\x00\x00\x00\x00\x00\x02\x00\x0b/1/onRe'
             'sult\x00\x04null\x00\x00\x00\x00\x00\x02\x00\x05hello\x00\x0b/2/o'
             'nResult\x00\x04null\x00\x00\x00\x00\x00\x02\x00\x05hello', {
-                'Content-Type': 'application/x-amf'})
+                'Content-Type': remoting.CONTENT_TYPE})
         response.tc = self
 
         dc.expected_url = '/x/y/z'
@@ -436,7 +438,7 @@
         gw.connection = dc
 
         response = DummyResponse(200, '\x00\x00\x00\x00\x00\x00', {
-            'Content-Type': 'application/x-amf'})
+            'Content-Type': remoting.CONTENT_TYPE})
 
         dc.response = response
 
@@ -477,7 +479,7 @@
 
         response = DummyResponse(200, '\x00\x00\x00\x01\x00\x12AppendToGatewayUrl'
             '\x01\x00\x00\x00\x00\x02\x00\x05hello\x00\x00', {
-            'Content-Type': 'application/x-amf'})
+            'Content-Type': remoting.CONTENT_TYPE})
 
         dc.response = response
 
@@ -491,7 +493,7 @@
 
         response = DummyResponse(200, '\x00\x00\x00\x01\x00\x11ReplaceGatewayUrl'
             '\x01\x00\x00\x00\x00\x02\x00\x10http://spam.eggs\x00\x00', {
-            'Content-Type': 'application/x-amf'})
+            'Content-Type': remoting.CONTENT_TYPE})
 
         dc.response = response
 
@@ -504,7 +506,7 @@
         gw.connection = dc
         dc.response = DummyResponse(200, '\x00\x00\x00\x01\x00\x11ReplaceGatewayUrl'
             '\x01\x00\x00\x00\x00\x02\x00\x10http://spam.eggs\x00\x00', {
-            'Content-Type': 'application/x-amf'})
+            'Content-Type': remoting.CONTENT_TYPE})
 
         gw._getResponse()
         self.assertTrue(dc.response.closed, True)
Index: pyamf/remoting/client/__init__.py
===================================================================
--- pyamf/remoting/client/__init__.py	(revision 1464)
+++ pyamf/remoting/client/__init__.py	(working copy)
@@ -16,6 +16,9 @@
 #: @see: L{ClientTypes<pyamf.ClientTypes>}
 DEFAULT_CLIENT_TYPE = pyamf.ClientTypes.Flash6
 
+#: Default user agent is C{PyAMF/x.x.x}.
+DEFAULT_USER_AGENT = 'PyAMF/%s' % '.'.join(map(lambda x: str(x), pyamf.__version__))
+
 HTTP_OK = 200
 
 def convert_args(args):
@@ -182,12 +185,14 @@
     @type headers: L{HeaderCollection<pyamf.remoting.HeaderCollection>}
     """
 
-    def __init__(self, url, amf_version=pyamf.AMF0, client_type=DEFAULT_CLIENT_TYPE):
+    def __init__(self, url, amf_version=pyamf.AMF0, client_type=DEFAULT_CLIENT_TYPE,
+                 user_agent=DEFAULT_USER_AGENT):
         self.logger = logging.instance_logger(self)
         self.original_url = url
         self.requests = []
         self.request_number = 1
 
+        self.user_agent = user_agent
         self.amf_version = amf_version
         self.client_type = client_type
         self.headers = remoting.HeaderCollection()
@@ -232,7 +237,8 @@
             raise ValueError, 'Unknown scheme'
 
         self.logger.info('Creating connection to %s://%s:%s' % (self.url[0], hostname, port))
-
+        self.logger.debug('User-Agent: %s' % self.user_agent)
+        
     def addHeader(self, name, value, must_understand=False):
         """
         Sets a persistent header to send with each request.
@@ -334,10 +340,12 @@
         """
         self.logger.debug('Executing single request: %s' % request)
         body = remoting.encode(self.getAMFRequest([request]))
-
+        headers = {'Content-Type': remoting.CONTENT_TYPE,
+                   'User-Agent': self.user_agent}
+        
         self.logger.debug('Sending POST request to %s' % self._root_url)
         self.connection.request('POST', self._root_url, body.getvalue(),
-            {'Content-Type': remoting.CONTENT_TYPE})
+                                headers)
 
         envelope = self._getResponse()
         self.removeRequest(request)
@@ -350,10 +358,12 @@
         C{self.requests}.
         """
         body = remoting.encode(self.getAMFRequest(self.requests))
-
+        headers = {'Content-Type': remoting.CONTENT_TYPE,
+                   'User-Agent': self.user_agent}
+        
         self.logger.debug('Sending POST request to %s' % self._root_url)
         self.connection.request('POST', self._root_url, body.getvalue(),
-            {'Content-Type': remoting.CONTENT_TYPE})
+                                headers)
 
         envelope = self._getResponse()
 
