Recently I was working for a product where i have to post a file to a remote server where remote server dont allow outbout FTP.
And in this process i found a couple of methods to post file to server;
my required file was in Xml and have to post that xml to remote server where I can fetch that data
Its quite simple and easy method.
here are my findings
local file name : postfile.php
remote file name : receivexml.php
code for postfile.php
$thistext="<?xml version="1.0"?>
<SERVICES>
<serv1234>
<short>1234</short>
<isuser>0</isuser>
<keyword>keyword</keyword>
<table>wltable</table>
<expiry>
<expiry_status>1</expiry_status>
<expiry_startdate>04-JUL-12</expiry_startdate>
<expiry_enddate>27-JUL-12</expiry_enddate>
<expiry_message>Expiry Message</expiry_message>
</expiry>
</serv1234>
</SERVICES>";
$ch = curl_init('http://rem.ote.server.ip/receivexml.php');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $thistext);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/xml',
'Content-Length: ' . strlen($thistext)) );
$result = curl_exec($ch);
print_r($result);
curl_close($ch);
code for receivexml.php
echo "test xml";
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ){
$postText = file_get_contents('php://input');
}
//print_r($postText);
$shortcode='';
$xml = new SimpleXMLElement($postText);
$result = $xml->xpath('/SERVICES/ serv1234/short');
while(list( , $node) = each($result)) {
echo $short=$node;
}
$myFile = "/directory/path/to/xml/".$short.".xml";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData=$postText;
fwrite($fh, $stringData);
fclose($fh);
?>
in receivexml.php
- received the file and stored in $postText
- parsed the xml data with xpath
- set the file name to a tag value in this case "short"
- write data to file.
Hey, thanks so much.. this helped me alot...
ReplyDeleteWhy are you spamming links to this blog? Please stop.
ReplyDeletespamming like what??
Delete