title: Send raw POST request using Socket
body: <p>I am trying to send a raw <code>POST</code> request to a <code>chromedriver</code> server.</p>
  
  <p>Here is what I try to initiate a <code>new session</code>:</p>
  
  <pre><code>import socket
  
  s = socket.socket(
      socket.AF_INET, socket.SOCK_STREAM)
  
  s.connect(("127.0.0.1", 9515))
  
  s.send(b'POST /session HTTP/1.1\r\nContent-Type:application/json\r\n{"capabilities": {}, "desiredCapabilities": {}}\r\n\r\n')
  response = s.recv(4096)
  print(response)
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>b'HTTP/1.1 200 OK\r\nContent-Length:270\r\nContent-Type:application/json; charset=utf-8\r\nConnection:close\r\n\r\n{"sessionId":"b26166c2aac022566917db20260500bb","status":33,"value":{"message":"session not created exception: Missing or invalid capabilities\\n  (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.4.0-91-generic x86_64)"}}'
  </code></pre>
  
  <p>Summary of error: <code>json</code> object I am sending is not getting parsed correctly</p>
  
  <p>When I use the same <code>json</code> object but send it by <code>requests</code> library, everything is OK:</p>
  
  <pre><code>import requests
  
  params = {
          'capabilities': {},
          'desiredCapabilities': {}
      }
  
  
  headers = {'Content-type': 'application/json'}
  
  URL = "http://127.0.0.1:9515"
  
  r = requests.post(URL + "/session", json=params)
  
  print("Status: " + str(r.status_code))
  print("Body: " + str(r.content))
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>Status: 200
  Body: b'{"sessionId":"e03189a25d099125a541f3044cb0ee42","status":0,"value":{"acceptSslCerts":true,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"browserName":"chrome","chrome":{"chromedriverVersion":"2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8)","userDataDir":"/tmp/.org.chromium.Chromium.LBeQkw"},"cssSelectorsEnabled":true,"databaseEnabled":false,"handlesAlerts":true,"hasTouchScreen":false,"javascriptEnabled":true,"locationContextEnabled":true,"mobileEmulationEnabled":false,"nativeEvents":true,"networkConnectionEnabled":false,"pageLoadStrategy":"normal","platform":"Linux","rotatable":false,"setWindowRect":true,"takesHeapSnapshot":true,"takesScreenshot":true,"unexpectedAlertBehaviour":"","version":"60.0.3112.90","webStorageEnabled":true}}'
  </code></pre>
  
  <p>Summary of output: <code>json</code> object is parsed successfully by the <code>chromedriver</code> and <code>new session</code> is created</p>
  
  <p>Do you, guys, have an idea why sending the raw <code>POST</code> request using <code>socket</code> is not working as expected?</p>