Jump to content

XML/PHP API Question! Solved one part need help with selecting!


oskare100

Recommended Posts

Hello,

I've managed to recieve all messages from Ebay within the data range I specified with the call GetMemberMessages (http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/io_GetMemberMessages.html) but I have one problem left I really need help with.

 

Here is the code I used:

<?php   
include('functions.php');
include('variables.php');
error_reporting(E_ALL);
ini_set('display_errors', '1');
    //SiteID must also be set in the Request's XML
    //SiteID = 0  (US) - UK = 3, Canada = 2, Australia = 15, ....
    //SiteID Indicates the eBay site to associate the call with
    $siteID = 0;
    //the call being made:
    $verb = 'GetMemberMessages';
    //Regulates versioning of the XML interface for the API
    $compatabilityLevel = 433;

    //get an array of strings containing the required headers
    $headers = buildEbayHeaders($devID, $appID, $certID, $compatabilityLevel, $siteID, $verb);

    // Time from and time to
    $time_from = date('Y-m-d\TH:i:s',strtotime("-10 days")).'.799Z';
    $time_to = date('Y-m-d\TH:i:s',strtotime("+ 1 day")).'.799Z';
    
    ///Build the request Xml string
    $requestXmlBody = '<?xml version="1.0" encoding="utf-8">';
    $requestXmlBody .= '<GetMemberMessagesRequest xmlns="urn:ebay:apis:eBLBaseComponents">';
    $requestXmlBody .= "<RequesterCredentials><eBayAuthToken>$userToken</eBayAuthToken></RequesterCredentials>";
    $requestXmlBody .= "<MailMessageType>All</MailMessageType>";
    $requestXmlBody .= "<EndCreationTime>$time_to</EndCreationTime>";
    $requestXmlBody .= "<StartCreationTime>$time_from</StartCreationTime>";
    $requestXmlBody .= '</GetMemberMessagesRequest>';
    
    $responseXml = sendHttpRequest($requestXmlBody, $serverUrl, $headers);
    if(stristr($responseXml, 'HTTP 404') || $responseXml == '')
        die('<P>Error sending request');
    
    //Xml string is parsed and creates a DOM Document object
    $responseDoc = domxml_open_mem($responseXml);
    
    //get any error nodes
    $errors = $responseDoc->get_elements_by_tagname('Errors');
    
    //if there are error nodes
    if(count($errors) > 0)
    {
        echo '<P><B>eBay returned the following error(s):</B>';
        //display each error
        //Get error code, ShortMesaage and LongMessage
        $code = $errors[0]->get_elements_by_tagname('ErrorCode');
        $shortMsg = $errors[0]->get_elements_by_tagname('ShortMessage');
        $longMsg = $errors[0]->get_elements_by_tagname('LongMessage');
        //Display code and shortmessage
        echo '<P>', $code[0]->get_content(), ' : ', str_replace(">", ">", str_replace("<", "<", $shortMsg[0]->get_content()));
        //if there is a long message (ie ErrorLevel=1), display it
        if(count($longMsg) > 0)
            echo '<BR>', str_replace(">", ">", str_replace("<", "<", $longMsg[0]->get_content()));

    }
    else //no errors
    {
     //get results nodes
    $itemNodes = $responseDoc->get_elements_by_tagname('MemberMessage');
    
    foreach($itemNodes as $item){
    $message = $item->get_elements_by_tagname('MemberMessageExchange');
    			{
			//display all the elements of each item
			foreach($item->child_nodes() as $itemChild)
        echo $itemChild->get_content();
        
		}
    
    
    }
    
    }
?> 

 

The problem is that when I run that code I get all information back - everything - item numbers, emails, questions and everything else. I've no idea of how to select the information I want to use. That's what I really need help with.

 

I tried to use echo $itemChild->get_content('SenderEmail'); to get only the sender email but it didn't work, I still got everything back. I'm really greatful for any help I can get.

 

Thanks in advance,

Oskar R

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.