Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

example of response using Curl and PHP

Posted on 2014-04-14
6
Medium Priority
?
478 Views
Last Modified: 2014-05-15
We have a new tool for our church and I'm using their API to connect which for a few things has worked fine.  I'm needing some guidance though on just some basic information on what to do next.

They provide info on the API service, and parameters which I have been able to use fine.

My question is what to do with the XML example that is sent as well?  I am connecting and getting data back as an example below:

object(SimpleXMLElement)#1 (2) { ["request"]=> object(SimpleXMLElement)#2 (1) { ["parameters"]=> object(SimpleXMLElement)#4 (1) { ["argument"]=> array(2) { [0]=> object(SimpleXMLElement)#5 (1) { ["@attributes"]=> array(2) { ["value"]=> string(21) "group_profile_from_id" ["name"]=> string(3) "srv" } } [1]=> object(SimpleXMLElement)#6 (1) { ["@attributes"]=> array(2) { ["value"]=> string(3) "136" ["name"]=> string(2) "id" } } } } } ["response"]=> object(SimpleXMLElement)#3 (4) { ["service"]=> string(21) "group_profile_from_id" ["service_action"]=> string(7) "execute" ["availability"]=> string(6) "public" ["groups"]=> object(SimpleXMLElement)#4 (2)

Open in new window


I'd like to specify which information I want to display on our page, but cannot figure out how.

Here is what I tried, but it returns blank.

$xml = simplexml_load_string($data);


if(is_array($xml)) {
foreach($xml->item as $value){
    echo trim($value->full_name)."<br/>\n";
}

Open in new window

0
Comment
Question by:axessJosh
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 35

Expert Comment

by:gr8gonzo
ID: 40000330
That looks like a debugging dump of the data (like someone did a var_dump on the object). What does your code look like for the operation / curl call?
0
 
LVL 2

Author Comment

by:axessJosh
ID: 40000555
I'll have to login to another computer to get that.

That is a var_dump() that i setup.

What would clarify for me is how to break down the child nodes of the XML document.

for instance:

$xml->resource->groups->group as $value

however, there are child nodes of <group> that I'd like to get values for but it doesn't seem I can drill down that far.
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 40003947
You're headed in the right direction if you're using the PHP SimpleXML functions to create an object from the XML document.  If you want to post the XML document in the code snippet or if you want to post a URL that will allow us to retrieve the XML document, I'll be glad to show you how to parse it.  But let's start with the actual XML and not an abstract representation.  The examples will make more sense if you can see the XML, the object, and the code all at the same time.

One thing that is good about parsing from a PHP object... Eventually everyone will figure out that JSON is better than XML and they will want to move to JSON for the data transport language.  When they do that, your PHP object-oriented programming will need little if any change to incorporate the JSON in place of the XML.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 2

Author Comment

by:axessJosh
ID: 40018768
Here is the XML doc Ray.

It looks as though I have to "drill down" the heirarchy of the nodes to get returned the elements that I want.

<?xml version="1.0" encoding="UTF-8"?>
<ccb_api>
 <request>
 <parameters>
 <argument value="group_profiles" name="srv"/>
 <argument value="2010-02-01" name="modified_since"/>
 </parameters>
 </request>
 <response>
 <service>group_profiles</service>
 <service_action>execute</service_action>
 <availability>public</availability>
 <groups count="34">
 <group id="1">
 <name>Entire Church Group</name>
 <description>Everyone is a part of the church. This is the group for the entire church.</description>
 <image>https://s3.amazonaws.com/ccbchurch/40622/pics/g_1?AWSAccessKeyId=AKIAJ4CISARDRJPE4ERQ&amp;Expires=1
390930061&amp;Signature=lCcx73c682HA3blh5LbBbtrl7VU%3D</image>
 <campus id="1">Church of Cucumbers</campus>
 <main_leader id="1">
 <first_name>Larry</first_name>
 <last_name>Cucumber</last_name>
 <full_name>Larry Cucumber</full_name>
 <email>test@test.com</email>
 <phones>
 <phone type="contact">(012) 345-6789</phone>
 </phones>
 </main_leader>
 <leaders/>
 <participants/>
 <group_type id="5">Church</group_type>
 <department id="1">hello</department>
 <area id="1">Church</area>
 <calendar_feed>webcal://testing_stable.ccbchurch.com/group_calendar.ics?id=1&amp;tk=939102BA159F102DA85800
19B9B51440</calendar_feed>
 <registration_forms/>
 <current_members>56</current_members>
 <group_capacity>Unlimited</group_capacity>
 <addresses>
 <address type="meeting">
 <name>Meeting Address</name>
 <street_address>Meeting Address
Street</street_address>
 <city>City</city>
 <state></state>
 <zip></zip>
 <longitude></longitude>
 <latitude></latitude>
 <line_1>Meeting Address
Street</line_1>
 <line_2>City</line_2>
 </address>
 </addresses>
 <meeting_day id="0"></meeting_day>
 <meeting_time id="0"></meeting_time>
 <childcare_provided>false</childcare_provided>
 <interaction_type>Annoucement Only</interaction_type>
 <membership_type>Open to All</membership_type>
 <notification>false</notification>
 <user_defined_fields/>
 <listed>true</listed>
 <public_search_listed>false</public_search_listed>
 <inactive>false</inactive>
 <creator id="1">Larry Cucumber</creator>
 <modifier id="1">Larry Cucumber</modifier>
 <created>2003-11-26 13:03:43</created> <modified>2011-12-13 08:38:11</modified>
 </group>
 ...
 <group id="41">
 <name>New group created via API</name>
 <description>None</description>
 <image>https://cdn3.ccbchurch.com/preSTABLE/images/group-default.gif</image>
 <campus id="1">Church of Cucumbers</campus>
 <main_leader id="1">
 <first_name>Larry</first_name>
 <last_name>Cucumber</last_name>
 <full_name>Larry Cucumber</full_name>
 <email>test@test.com</email>
 <phones>
 <phone type="contact">(012) 345-6789</phone>
 </phones>
 </main_leader>
 <leaders/>
 <participants/>
 <group_type id="1">Care / Small Group</group_type>
 <department id="0"></department>
 <area id="0"></area>
 <calendar_feed>webcal://yourchurch.ccbchurch.com/group_calendar.ics?id=41&amp;tk=VVNY5RHV2V5PBJP3AFCRBR54P
A2C7FHM</calendar_feed>
 <registration_forms/>
 <current_members>1</current_members>
 <group_capacity>Unlimited</group_capacity>
 <addresses/>
 <meeting_day id="0"></meeting_day>
 <meeting_time id="0"></meeting_time>
 <childcare_provided>false</childcare_provided>
 <interaction_type>Members Interact</interaction_type>
 <membership_type>Invitation or Request Required</membership_type>
 <notification>false</notification>
 <user_defined_fields/>
 <listed>true</listed>
 <public_search_listed>false</public_search_listed>
 <inactive>false</inactive>
 <creator id="0">System User</creator>
 <modifier id="0">System User</modifier>
 <created>2014-01-28 10:25:57</created>
 <modified>2014-01-28 10:25:57</modified>
 </group>
 </groups>
 </response>
</ccb_api>

Open in new window


I was able to get the first bit of items I was looking for, however, can I have multiple loops parsing to get more data higher up in the XML data?
0
 
LVL 111

Accepted Solution

by:
Ray Paseur earned 2000 total points
ID: 40018801
Thanks for posting that.  Here is a start.  I have to finish some other things then I'll come back and show you the OOP notation to iterate over the interior data structures of the object.
http://iconoun.com/demo/temp_axessjosh.php

<?php // demo/temp_axessjosh.php
error_reporting(E_ALL);

/**
 * SEE http://www.experts-exchange.com/Programming/Languages/Scripting/PHP/Q_28412382.html#a40018768
 */

// TEST DATA FROM THE POST AT EE
$xml = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<ccb_api>
 <request>
 <parameters>
 <argument value="group_profiles" name="srv"/>
 <argument value="2010-02-01" name="modified_since"/>
 </parameters>
 </request>
 <response>
 <service>group_profiles</service>
 <service_action>execute</service_action>
 <availability>public</availability>
 <groups count="34">
 <group id="1">
 <name>Entire Church Group</name>
 <description>Everyone is a part of the church. This is the group for the entire church.</description>
 <image>https://s3.amazonaws.com/ccbchurch/40622/pics/g_1?AWSAccessKeyId=AKIAJ4CISARDRJPE4ERQ&amp;Expires=1
390930061&amp;Signature=lCcx73c682HA3blh5LbBbtrl7VU%3D</image>
 <campus id="1">Church of Cucumbers</campus>
 <main_leader id="1">
 <first_name>Larry</first_name>
 <last_name>Cucumber</last_name>
 <full_name>Larry Cucumber</full_name>
 <email>test@test.com</email>
 <phones>
 <phone type="contact">(012) 345-6789</phone>
 </phones>
 </main_leader>
 <leaders/>
 <participants/>
 <group_type id="5">Church</group_type>
 <department id="1">hello</department>
 <area id="1">Church</area>
 <calendar_feed>webcal://testing_stable.ccbchurch.com/group_calendar.ics?id=1&amp;tk=939102BA159F102DA85800
19B9B51440</calendar_feed>
 <registration_forms/>
 <current_members>56</current_members>
 <group_capacity>Unlimited</group_capacity>
 <addresses>
 <address type="meeting">
 <name>Meeting Address</name>
 <street_address>Meeting Address
Street</street_address>
 <city>City</city>
 <state></state>
 <zip></zip>
 <longitude></longitude>
 <latitude></latitude>
 <line_1>Meeting Address
Street</line_1>
 <line_2>City</line_2>
 </address>
 </addresses>
 <meeting_day id="0"></meeting_day>
 <meeting_time id="0"></meeting_time>
 <childcare_provided>false</childcare_provided>
 <interaction_type>Annoucement Only</interaction_type>
 <membership_type>Open to All</membership_type>
 <notification>false</notification>
 <user_defined_fields/>
 <listed>true</listed>
 <public_search_listed>false</public_search_listed>
 <inactive>false</inactive>
 <creator id="1">Larry Cucumber</creator>
 <modifier id="1">Larry Cucumber</modifier>
 <created>2003-11-26 13:03:43</created> <modified>2011-12-13 08:38:11</modified>
 </group>
 ...
 <group id="41">
 <name>New group created via API</name>
 <description>None</description>
 <image>https://cdn3.ccbchurch.com/preSTABLE/images/group-default.gif</image>
 <campus id="1">Church of Cucumbers</campus>
 <main_leader id="1">
 <first_name>Larry</first_name>
 <last_name>Cucumber</last_name>
 <full_name>Larry Cucumber</full_name>
 <email>test@test.com</email>
 <phones>
 <phone type="contact">(012) 345-6789</phone>
 </phones>
 </main_leader>
 <leaders/>
 <participants/>
 <group_type id="1">Care / Small Group</group_type>
 <department id="0"></department>
 <area id="0"></area>
 <calendar_feed>webcal://yourchurch.ccbchurch.com/group_calendar.ics?id=41&amp;tk=VVNY5RHV2V5PBJP3AFCRBR54P
A2C7FHM</calendar_feed>
 <registration_forms/>
 <current_members>1</current_members>
 <group_capacity>Unlimited</group_capacity>
 <addresses/>
 <meeting_day id="0"></meeting_day>
 <meeting_time id="0"></meeting_time>
 <childcare_provided>false</childcare_provided>
 <interaction_type>Members Interact</interaction_type>
 <membership_type>Invitation or Request Required</membership_type>
 <notification>false</notification>
 <user_defined_fields/>
 <listed>true</listed>
 <public_search_listed>false</public_search_listed>
 <inactive>false</inactive>
 <creator id="0">System User</creator>
 <modifier id="0">System User</modifier>
 <created>2014-01-28 10:25:57</created>
 <modified>2014-01-28 10:25:57</modified>
 </group>
 </groups>
 </response>
</ccb_api>
EOD;

// MAKE AN OBJECT
$obj = SimpleXML_Load_String($xml);

// VISUALIZE TEH OBJECT
echo '<pre>' . PHP_EOL;
var_dump($obj);

Open in new window

Back in a little while, ~Ray
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 40019714
<?php // demo/temp_axessjosh.php
error_reporting(E_ALL);
echo '<pre>' . PHP_EOL;

/**
 * SEE http://www.experts-exchange.com/Programming/Languages/Scripting/PHP/Q_28412382.html#a40018768
 */

// TEST DATA FROM THE POST AT EE
$xml = <<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<ccb_api>
 <request>
 <parameters>
 <argument value="group_profiles" name="srv"/>
 <argument value="2010-02-01" name="modified_since"/>
 </parameters>
 </request>
 <response>
 <service>group_profiles</service>
 <service_action>execute</service_action>
 <availability>public</availability>
 <groups count="34">
 <group id="1">
 <name>Entire Church Group</name>
 <description>Everyone is a part of the church. This is the group for the entire church.</description>
 <image>https://s3.amazonaws.com/ccbchurch/40622/pics/g_1?AWSAccessKeyId=AKIAJ4CISARDRJPE4ERQ&amp;Expires=1
390930061&amp;Signature=lCcx73c682HA3blh5LbBbtrl7VU%3D</image>
 <campus id="1">Church of Cucumbers</campus>
 <main_leader id="1">
 <first_name>Larry</first_name>
 <last_name>Cucumber</last_name>
 <full_name>Larry Cucumber</full_name>
 <email>test@test.com</email>
 <phones>
 <phone type="contact">(012) 345-6789</phone>
 </phones>
 </main_leader>
 <leaders/>
 <participants/>
 <group_type id="5">Church</group_type>
 <department id="1">hello</department>
 <area id="1">Church</area>
 <calendar_feed>webcal://testing_stable.ccbchurch.com/group_calendar.ics?id=1&amp;tk=939102BA159F102DA85800
19B9B51440</calendar_feed>
 <registration_forms/>
 <current_members>56</current_members>
 <group_capacity>Unlimited</group_capacity>
 <addresses>
 <address type="meeting">
 <name>Meeting Address</name>
 <street_address>Meeting Address
Street</street_address>
 <city>City</city>
 <state></state>
 <zip></zip>
 <longitude></longitude>
 <latitude></latitude>
 <line_1>Meeting Address
Street</line_1>
 <line_2>City</line_2>
 </address>
 </addresses>
 <meeting_day id="0"></meeting_day>
 <meeting_time id="0"></meeting_time>
 <childcare_provided>false</childcare_provided>
 <interaction_type>Annoucement Only</interaction_type>
 <membership_type>Open to All</membership_type>
 <notification>false</notification>
 <user_defined_fields/>
 <listed>true</listed>
 <public_search_listed>false</public_search_listed>
 <inactive>false</inactive>
 <creator id="1">Larry Cucumber</creator>
 <modifier id="1">Larry Cucumber</modifier>
 <created>2003-11-26 13:03:43</created> <modified>2011-12-13 08:38:11</modified>
 </group>
 ...
 <group id="41">
 <name>New group created via API</name>
 <description>None</description>
 <image>https://cdn3.ccbchurch.com/preSTABLE/images/group-default.gif</image>
 <campus id="1">Church of Cucumbers</campus>
 <main_leader id="1">
 <first_name>Larry</first_name>
 <last_name>Cucumber</last_name>
 <full_name>Larry Cucumber</full_name>
 <email>test@test.com</email>
 <phones>
 <phone type="contact">(012) 345-6789</phone>
 </phones>
 </main_leader>
 <leaders/>
 <participants/>
 <group_type id="1">Care / Small Group</group_type>
 <department id="0"></department>
 <area id="0"></area>
 <calendar_feed>webcal://yourchurch.ccbchurch.com/group_calendar.ics?id=41&amp;tk=VVNY5RHV2V5PBJP3AFCRBR54P
A2C7FHM</calendar_feed>
 <registration_forms/>
 <current_members>1</current_members>
 <group_capacity>Unlimited</group_capacity>
 <addresses/>
 <meeting_day id="0"></meeting_day>
 <meeting_time id="0"></meeting_time>
 <childcare_provided>false</childcare_provided>
 <interaction_type>Members Interact</interaction_type>
 <membership_type>Invitation or Request Required</membership_type>
 <notification>false</notification>
 <user_defined_fields/>
 <listed>true</listed>
 <public_search_listed>false</public_search_listed>
 <inactive>false</inactive>
 <creator id="0">System User</creator>
 <modifier id="0">System User</modifier>
 <created>2014-01-28 10:25:57</created>
 <modified>2014-01-28 10:25:57</modified>
 </group>
 </groups>
 </response>
</ccb_api>
EOD;

// MAKE AN OBJECT
$obj = SimpleXML_Load_String($xml);

// ACTIVATE THIS TO VISUALIZE THE OBJECT
// var_dump($obj);

// ITERATE OVER THE ELEMENTS OF THE OBJECT
foreach ($obj->request->parameters->argument as $arg)
{
//     var_dump($arg);
    $n = $arg->attributes()->name;
    $v = $arg->attributes()->value;
    echo PHP_EOL . "NAME: $n";
    echo PHP_EOL . "VALUE: $v";
}
echo PHP_EOL;

foreach ($obj->response->groups->group as $grp)
{
//    var_dump($grp);
    $n = $grp->name;
    $d = $grp->main_leader->full_name;
    $t = $grp->group_type;
    echo PHP_EOL . "GROUP NAME: $n, LEADER: $d, TYPE: $t";
}

Open in new window

HTH, ~Ray
0

Featured Post

Tech or Treat! - Giveaway

Submit an article about your scariest tech experience—and the solution—and you’ll be automatically entered to win one of 4 fantastic tech gadgets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article discusses how to create an extensible mechanism for linked drop downs.
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
Suggested Courses

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question