Como HTTP POST um arquivo XML usando PHP sem CURL?

Eu tenho um XML criado a partir de uma tabela no MySql, eu preciso fazer uma postagem HTTP para inserir o XML em um serviço da Web. O Web Service apenas aceita methods SOAP, HTTP POST e HTTP GET. Eu tentei fazer o pedido HTTP POST de maneiras diferentes, sem sorte. Eu nunca trabalhei com SOAP antes. Como posso fazer o HTTP POST ou SOAP Request?

post_xml.xml:

   37 2013-07-10 06:10:42  2013 12 21 Sport    Jay 11z test@gmail.com 99999999 
1130 E Test sa Z 79924 USA

client1.php (HTTP POST CODE)

 $xml = file_get_contents('post_xml.xml'); $url = 'http://stg.sa.com/post.asmx/'; $post_data = array ("XML" => $xml); $stream_options = array( $url => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded' . "\r\n", 'content' => http_build_query($post_data) ) ); $context = stream_context_create($stream_options); $response = file_get_contents($url, null, $context); 

Especificações HTTP POST do Web Service:

O seguinte é um exemplo de solicitação HTTP HTTP e resposta.

 POST /st.asmx/Post HTTP/1.1 Host: stg.sa.com Content-Type: application/x-www-form-urlencoded Content-Length: length XML= string HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length  xml 

Acho que sua matriz POST está errada

Experimentar:

 $xml = file_get_contents('post_xml.xml'); $url = 'http://stg.sa.com/post.asmx/'; $post_data = array( "xml" => $xml, ); $stream_options = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'content' => http_build_query($post_data), ), ); $context = stream_context_create($stream_options); $response = file_get_contents($url, null, $context);