How to HTTP POST XML file using PHP without cURL?

I have an XML created from an In MySql table, I need to make an HTTP message to insert the XML into the web service. The web service simply accepts SOAP, HTTP POST, and HTTP GET methods. I tried to make an HTTP POST request in different ways, no luck. I have never worked with SOAP before. How can I execute an HTTP POST or SOAP Request?

post_xml.xml:

<?xml version="1.0" encoding="utf-8"?> <?ADF version="1.0"?> <adf> <prospect><id sequence="1" source="xxxs">37</id> <requestdate>2013-07-10 06:10:42</requestdate> <vehicle interest="buy" status="new"> <year>2013</year> <make>12</make> <model>21</model> <trim>Sport</trim> </vehicle> <customer> <contact> <name part="first">Jay</name> <name part="last">11z</name> <email> test@gmail.com </email> <phone time="morning" type="voice" preferredcontact="1">99999999</phone> <address> <street line="1">1130 E Test</street> <city>sa</city> <regioncode>Z</regioncode> <postalcode>79924</postalcode> <country>USA</country> </address> </contact> </prospect> </adf> 

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); 

HTTP POST Web Service Specifications:

The following is an example of an HTTP POST request and response.

 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 version="1.0"?> xml 
+4
source share
1 answer

I think your POST array is incorrect

Try:

 $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); 
+8
source

Source: https://habr.com/ru/post/1490777/


All Articles