title: Send POST request with x-amf (Flash) request header
body: <p>I'm trying to reproduce a POST request that was captured from WireShark using PHP. This POST request was sent by a Flash (.swf) object, so it's a little bit complicated in configuring the header.</p>
  
  <p>It does not print out anything in the end, so there must be something wrong with PHP code that I could not see.</p>
  
  <p>Here is what WireShark captured:</p>
  
  <pre><code>POST /engine/ HTTP/1.1\r\n
  Host: abcdef.com\r\n
  User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0\r\n
  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
  Accept-Language: en-us,en;q=0.5\r\n
  Accept-Encoding: gzip, deflate\r\n
  Accept-Charset: UTF-8,*\r\n
  Keep-Alive: 115\r\n
  Connection: keep-alive\r\n
  Cookie: __utma=77520967.190998754.1302600802.1302605710.1302693085.3; __utmz=77520967.1302600802.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); PHPSESSID=vqtt7v2l5h10nd06fdsuii49e0; __utmc=77520967
  Referer: http://abcdef.com/v2.swf\r\n\r\n
  Referer: http://abcdef.com/v2.swf\r\n
  Content-Type: application/x-amf\r\n
  Content-Length: 50\r\n
  \r\n  
  </code></pre>
  
  <p>Here is the PHP code <em>with info.txt was made by a HEX editor</em> and all info are correct (i.e. 50 bytes, exact HEX content captured by WireShark)</p>
  
  <pre><code>// Get cookie
  $ch = curl_init('http://abcdef.com/');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  preg_match('/^Set-Cookie: (.*?);/m', curl_exec($ch), $m);
  
  // Read x-amf data
  $fileHandle = fopen("info.txt", "rb");
  $postdata = stream_get_contents($fileHandle);
  fclose($fileHandle);
  
  // Send POST request to server
  $opts = array('http' =&gt;
              array(
                  'method' =&gt; 'POST',
                  'header' =&gt; "
                      User-Agent: Mozilla/5.0 (X11; Linux i686; rv:2.0) Gecko/20100101 Firefox/4.0\r\n
                      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
                      Accept-Language: en-us,en;q=0.5\r\n
                      Accept-Encoding: gzip, deflate\r\n
                      Accept-Charset: UTF-8,*\r\n
                      Keep-Alive: 115\r\n
                      Cookie: ".$m[1]."\r\n
                      Connection: keep-alive\r\n
                      Referer: http://abcdef.com/v2.swf\r\n
                      Content-Type: application/x-amf\r\n
                      Content-Length: 50\r\n",
                  'content' =&gt; $postdata
              )
          );
  $context = stream_context_create($opts);
  $result = file_get_contents('http://abcdef.com/engine/', false, $context);
  print_r($result);
  </code></pre>
  
  <p>The result is a blank page instead of response from server.</p>