line below.
$custNmbr = "CUSTNMBR";
$today = date("m/d/y");
// array of input data
$myInput = $_GET;
// If you don't pass data in as a GET variables, hard code them here:
if (! isset($myInput['origZip'])) {
$myInput['origZip'] = "19348";
}
if (! isset($myInput['destZip'])) {
$myInput['destZip'] = "97202";
}
// array of elements you want to query from the XML Response
$myElements = array('TotalCharge', 'Discount', 'TotalAccessorialCharges', 'NetCharge', 'TransitTime');
/*
Build XML Request
In actual use, you would probably populate the XML Request
parameters (Weights, Classes, Zip Codes, etc.) from data submitted
via an on-line order form or database.
For this sample we will just hard code some dummy data.
*/
$itemArray = array(); //Your commodity items, maximum of 4 - add as needed
$itemArray[] = array('class'=>'775', 'weight'=>'667');
$itemArray[] = array('class'=>'100', 'weight'=>'555');
$accArray = array(); // Your accessorial services - add as needed
$accArray[] = "SSC";
$accArray[] = "DNC";
$accArray[] = "GUR";
extract($myInput);
$xmlRequest="" .
"$origZip" .
"$destZip";
// To get customer specific discount, uncomment this line:
// $xmlRequest .= "$custNmbr";
$xmlRequest .= "P" .
"100" .
"$today";
foreach ($itemArray as $item) { // Add commodity items to the XML Request
extract($item);
$xmlRequest .= "" .
"$class" .
"$weight" .
"";
}
foreach ($accArray as $acc) { // Add accessorials to the XML Request
$xmlRequest .= "$acc";
}
$xmlRequest .= "";
//Convert characters to proper format for HTTP POST
$xmlRequest = urlencode($xmlRequest);
// open synchronous connection to Con-way servlet and set options
$urlConn = curl_init ($requestUrl);
curl_setopt ($urlConn, CURLOPT_POST, 1);
curl_setopt ($urlConn, CURLOPT_SSL_VERIFYPEER, false); // May be needed for SSL behind a firewall
curl_setopt ($urlConn, CURLOPT_HTTPHEADER, array("Content-type: application/x-www-form-urlencoded"));
curl_setopt ($urlConn, CURLOPT_USERPWD, $username.":".$password);
curl_setopt ($urlConn, CURLOPT_POSTFIELDS, "$requestType=$xmlRequest");
// Get the XML Response
ob_start(); // prevent the buffer from being displayed
curl_exec($urlConn);
$xmlResponse = ob_get_contents();
ob_end_clean();
curl_close($urlConn); // close the connection
// Parse the XML Response
$parser= xml_parser_create();
xml_parse_into_struct($parser,$xmlResponse,$xmlVals);
xml_parser_free($parser);
// This function will return an array of the values of an element
// given the $vals and $index arrays, and the element name
function getElementValue($xmlVals, $elName) {
$elValue = null;
foreach ($xmlVals as $arrkey => $arrvalue) {
foreach ($arrvalue as $key => $value) {
if ($value==strtoupper($elName)){
$elValue[] = $arrvalue['value'];
}
}
}
return $elValue;
}
// Build the HTML page
echo "
Sample PHP for Con-way XML $title>
Sample PHP Con-way XML $title
";
// Extract your element values from the XML Response
$elCount = count(getElementValue($xmlVals, $myElements[0])); // total occurrences
// The outer loop iterates the total number of occurrences of your first element
for ($i=0; $i < $elCount; $i++) {
// The inner loop iterates all of your elements, for each occurrence of the first
foreach ($myElements as $myEl) {
$myVals = getElementValue($xmlVals, $myEl);
echo "Value of <$myEl> is: $myVals[$i] ";;
}
echo ' ';
}
echo "Here is the dump of the XML output for $title:" .
"$xmlResponse
" .
"And here it is displayed as a formatted array: ";
print_r($xmlVals);
echo
"" .
"";
?>