API - Pobieranie Ogłoszeń
Krok 1: Przygotowujemy dokument XML lub formularz POST Na przykład (XML):
Aby ułatwić generowanie dokumenty XML z konkretnymi filtrami przygotowaliśmy generator, któy ułatwi państwu stworzenie odpowiedniego
zapytania. Generator ten po uzyskaniu klucza API można znaleźć tutaj:
ZOBACZ GENERATOR ZAPYTAŃ
<?xml version="1.0" encoding="utf8"?>
<Document>
<Zapytanie>
<ApiKey></ApiKey>
<Kategoria></Kategoria>
<SubKategoria></SubKategoria>
<Sex></Sex>
<AdvertType></AdvertType>
<Country></Country>
<String></String>
<Rok></Rok>
<Miesiac></Miesiac>
<Dzien></Dzien>
<User>0</User>
<FormatWyniku></FormatWyniku>
<Debug>0</Debug>
<Limit></Limit>
<Strona></Strona>
</Zapytanie>
</Document>
Krok 2: Wysyłamy dokument na adres:
// W przypadku zapytania poprzez XML
http://aukcjezwierzat.pl/api/getDataByXML.php?ApiKey=Twoj_klucz_api
// W przypadku zapytania poprzez POST
http://aukcjezwierzat.pl/api/getDataByPOST.php?ApiKey=Twoj_klucz_api
Metoda przesyłu informacji XML poprzez PHP/CURL
<?
function xml_post($post_xml, $url, $port)
{
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_xml); /
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
if($port==443)
{
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
}
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$xml=file_get_contents("plik_xml_z_zapytaniem.xml");
$url ='http://aukcjezwierzat.pl/api/getDataByXML.php?ApiKey=twoj_klucz';
$port = 80;
// W zmiennej $response znajduje się wybrany format odpowiedzi. W zależności od wybranej
// opcji będzie to dokument XML, sama jego struktura
// bądz forma serialized PHP
$response = xml_post($xml, $url, $port);
?>
Krok 3: W odpowiedzi dla struktur XML zostanie wygenerowana odpowiedź
<Document>
<Dane>
<LiczbaOgloszen>43</LiczbaOgloszen>
</Dane>
<Ogloszenia>
<Advert>
<Id>56</Id>
<Tytul>fdsfsd</Tytul>
<Opis>sfds</Opis>
<Data>2008-10-10 14:22:54</Data>
<ZdjecieMale>http://animalsmarket.com/img/offers/water/pig_water.gif</ZdjecieMale>
<ZdjecieDuze>http://animalsmarket.com/img/offers/water/pig_water.gif</ZdjecieDuze>
<AdresURL>http://aukcjezwierzat.pl/aukcja56_fdsfsd.html</AdresURL>
<Kategoria>Świnie</Kategoria>
<SubKategoria>Inne</SubKategoria>
<Kraj>Wszystkie Kraje Swiata</Kraj>
<Cena>0</Cena>
<Waluta>Euro</Waluta>
<TypAukcji>0</TypAukcji>
<UzytkownikID>1</UzytkownikID>
</Advert>
<Advert>
<Id>58</Id>
<Tytul>fdsfsd</Tytul>
<Opis>sfds</Opis>
<Data>2008-10-10 14:22:54</Data>
<ZdjecieMale>http://animalsmarket.com/img/offers/water/pig_water.gif</ZdjecieMale>
<ZdjecieDuze>http://animalsmarket.com/img/offers/water/pig_water.gif</ZdjecieDuze>
<AdresURL>http://aukcjezwierzat.pl/aukcja56_fdsfsd.html</AdresURL>
<Kategoria>Świnie</Kategoria>
<SubKategoria>Inne</SubKategoria>
<Kraj>Wszystkie Kraje Swiata</Kraj>
<Cena>0</Cena>
<Waluta>Euro</Waluta>
<TypAukcji>0</TypAukcji>
<UzytkownikID>1</UzytkownikID>
</Advert>
</Ogloszenia>
Krok 3: W odpowiedzi dla Serialize PHP zostanie wygenerowana odpowiedź
a:1:{i:0;a:2:{i:0;a:14:{s:2:"Id";s:2:"56";s:5:"Tytul";s:6:"fdsfsd";s:4:"Opis";s:4:"sfds";s:4...
Krok 4: Zapisujemy odpowiedź w frmie pliku XML lub parsujemy go na bierząco
W poniższym przypadku przedstawiamy metodę parsowania pliku XML i zamiany go w tablicę. Operacje te korzystają z uniwersanych rozwiązań
dla języków PHP4 i PHP5. Oczywiście w wypadku języka PHP5 można użyć metod SimpleXML
Przykładowa funkcja odczytująca dane XML pobrane za pomocą API
<?
// Wybierając opcję odpowiedzi strukturą bazy danych możemy na bierząco parsować dokument.
// Oczywiście istnieje wiele metod pobierania i parsowania struktury danych, my
// postaramy się przedstawić jedną z nich. Metoda właściwa dla wybranej opcji "Struktura XML"
$odpowiedz=$response;
$data= $odpowiedz;
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
$start_level = 1;
foreach ($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes',$xml_elem)) {
list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if ($xml_elem['type'] == 'complete') {
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
$php_stmt .= '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']][] = $xml_elem[\'value\'];';
eval($php_stmt);
$start_level--;
}
}
// Odczyt strutury następuje poprzez następujące funkcje
for ( $i=0;$i<count($params['ADVERT']);$i++){
echo $params['ADVERT']['ID'][$i];
echo $params['ADVERT']['TYTUL'][$i];
echo $params['ADVERT']['OPIS'][$i];
echo $params['ADVERT']['DATA'][$i];
echo $params['ADVERT']['ZDJECIEMALE'][$i];
echo $params['ADVERT']['ZDJECIEDUZE'][$i];
echo $params['ADVERT']['ADRESURL'][$i];
echo $params['ADVERT']['KATEGORIA'][$i];
echo $params['ADVERT']['SUBKATEGORIA'][$i];
echo $params['ADVERT']['KRAJ'][$i];
echo $params['ADVERT']['CENA'][$i];
echo $params['ADVERT']['WALUTA'][$i];
echo $params['ADVERT']['TYPAUKCJI'][$i];
echo $params['ADVERT']['UZYTKOWNIKID'][$i];
}
?>
Przykładowa funkcja odczytująca dane Serialized PHP pobrane za pomocą API
<?
$dane = $xml_response;
$dane=unserialize($dane);
print_r($dane);
for ($i=0;$i<count($dane[0]);$i++){
echo $dane[0][$i]["Id"];
echo $dane[0][$i]["Tytul"];
echo $dane[0][$i]["Opis"];
echo $dane[0][$i]["Data"];
echo $dane[0][$i]["ZdjecieMale"];
echo $dane[0][$i]["ZdjecieDuze"];
echo $dane[0][$i]["AdresURL"];
echo $dane[0][$i]["Kategoria"];
echo $dane[0][$i]["SubKategoria"];
echo $dane[0][$i]["Kraj"];
echo $dane[0][$i]["Cena"];
echo $dane[0][$i]["Waluta"];
echo $dane[0][$i]["TypAukcji"];
echo $dane[0][$i]["UzytkownikID"];
}
?>
