0

I have a datafile.xml that needs to be sent to a webservice. I am using php curl to send the file. The problem is I don't know how to access and send the contents of the datafile.xml.

Here is content of the datafile.xml -

<?xml version="1.0" encoding="ISO-8859-1"?>
<inventoryUpdateRequest version="1.0">
<action name="bookupdate">
<username>user</username>
<password>issecret</password>
</action>
<WebList>
<Website>
<transactionType>delete</transactionType>
<vendorBookID>FaNuPh1</vendorBookID>
</Website>
</WebList>
</inventoryUpdateRequest>

Here is my send php file -

<?php require_once('post_xml.php');?>
<?php 

$xml = HERE IS MY LACK OF UNDERSTANDING HOW TO EXTRACT datafile.xml CONTENT;

$url ='https://inventoryupdate.website.com';
$port = 80;
$response = xml_post($xml, $url, $port);    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<P><?=nl2br(htmlentities($response));?></P>
</body>
</html>

And here is the post_xml.php file that uses cURL -

<?php
// open a http channel, transmit data and return received buffer
function xml_post($post_xml, $url, $port)
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];

$ch = curl_init();    // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);              // Fail on errors

if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off'))
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    // allow redirects
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_PORT, $port);          //Set the port number
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); // add POST fields
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

if($port==443)
{
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
}

$data = curl_exec($ch);

curl_close($ch);

return $data;
}
?>

Any help would be much appreciated!

1 Answer 1

2

If you don't need to parse the XML file, then I'd suggest fopen() or file_get_contents().

For simplicity sake, assuming datafile.xml is in the same directory, try:

$xml = file_get_contents('datafile.xml');
Sign up to request clarification or add additional context in comments.

1 Comment

It would be preferable to retrieve the xml file from my desktop. My database program which exports the xml file only exports locally (will not export to a remote server).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.