I need have a gform submission POST to third party api as xmldata.
Url that data needs to POST to:
XML Format Needed (being pulled from gravity form below):
<crcloud>
<lead>
<type>Client</type>
<firstname>Scott</firstname>
<lastname>James</lastname>
<client_assigned_to>Bill Smith</client_assigned_to>
</lead>
</crcloud>
I have a curl function written but I am receiving a parsing error when posting. I have validated the xml and it is correct. I can also paste the xml data that prints out directly behind my url and get the result I want.
[php]<?php
add_action(“gform_after_submission”, “set_post_content”, 10, 2);
function set_post_content($entry, $form){
function post_to_url($url, $post) {
$fields = '';
foreach($post as $key => $value) {
$fields .= $key . '=' . $value . '&';
}
rtrim($fields, '&');
$url = 'https://www.3rdparty.com/api/lead/insertRecord?apiauthkey=yourapikey&secretkey=yoursecretkey&xmlData=yourxmldata'.$xml;
$post = curl_init();
curl_setopt($post, CURLOPT_URL, $url);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($post, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($post, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($post, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'rw+');
curl_setopt($post, CURLOPT_STDERR, $verbose);
$result = curl_exec($post);
echo $post; //Resource id #*** currently
echo $result; //False 4404 XML parsing error currently
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
curl_close($post);
}
if($form["id"] == 2){//sign up now
$data = array(
"type" => $entry["31"],
"firstname" => $entry["3"],
"lastname" => $entry["4"],
"client_assigned_to" => $entry["34"]);
$xml = new SimpleXMLElement('<crcloud/>');
$lead = $xml->addchild('lead');
$data = array_flip($data);
array_walk_recursive($data, array ($lead, 'addChild'));
print $xml->asXML();
post_to_url($url, $xml);
}
}
?>[/php]