Z penwego blogu mam kod, który chciałem sprawdzić. Zrobłem logowanie i wkleiłem dalszy kod...
Niestety to wyrzuca tylko błąd:
Kod
Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object hasn't 'search-limit' property in /home2/gla10000/public_html/webapi/index.php:275 Stack trace: #0 [internal function]: SoapClient->__call('doSearch', Array) #1 /home2/gla10000/public_html/webapi/index.php(275): WebAPISoapClient->doSearch('6892320884ff75a...', Object(stdClass)) #2 {main} thrown in /home2/gla10000/public_html/webapi/index.php on line 275
Linijkę 275 zaznaczyłem.
CODE
<h1>WebApi Allegro: aukcjoner</h1>
<?php
error_reporting(E_ALL);
/**
* @see http://www.php.net/manual/en/book.soap.php
* @link http://wrzasq.pl/
* @author Wrzasq <wrzasq@gmail.com>
* @copyright 2008 © by Wrzasq
* @license http://www.opensource.org/licenses/bsd-license.php
*/
class WebAPISoapClient extends SoapClient
{
/**
* Kraj - Polska.
*/
const COUNTRY_PL = 1;
/**
* Logowanie do serwisu testwebapi.pl.
*/
const COUNTRY_TESTWEBAPI = 228;
/**
* Zapytanie o wersję Allegro WebAPI.
*/
const QUERY_ALLEGROWEBAPI = 1;
/**
* Czas trwania - 3 dni.
*/
const LIFETIME_3DAYS = 0;
/**
* Czas trwania - 5 dni.
*/
const LIFETIME_5DAYS = 1;
/**
* Czas trwania - 7 dni.
*/
const LIFETIME_7DAYS = 2;
/**
* Czas trwania - 10 dni.
*/
const LIFETIME_10DAYS = 3;
/**
* Czas trwania - 14 dni.
*/
const LIFETIME_14DAYS = 4;
/**
* Koszty pokrywa sprzedający.
*/
const TRANSPORT_COST_SELLER = 0;
/**
* Koszty pokrywa kupujący.
*/
const TRANSPORT_COST_BUYER = 1;
/**
* Przesyłka pocztowa (polecona/paczka).
*/
const TRANSPORT_OPTION_POST = 1;
/**
* Przesyłka pocztowa priorytetowa (polecona/paczka).
*/
const TRANSPORT_OPTION_POSTPRIORITY = 2;
/**
* Przesyłka kurierska.
*/
const TRANSPORT_OPTION_COURIER = 4;
/**
* Odbiór osobisty.
*/
const TRANSPORT_OPTION_PERSONAL = 8;
/**
* Inne.
*/
const TRANSPORT_OPTION_OTHER = 16;
/**
* Zgadzam się na przesłanie przedmiotu za granicę.
*/
const TRANSPORT_OPTION_ABROAD = 32;
/**
* Przedpłata.
*/
const PAYMENT_OPTION_PREPAID = 1;
/**
* Pobranie.
*/
const PAYMENT_OPTION_POSTPAID = 2;
/**
* Płatności Allegro.
*/
const PAYMENT_OPTION_ALLEGRO = 4;
/**
* Bezpieczne Płatności Allegro z Escrow.
*/
const PAYMENT_OPTION_ESCROW = 8;
/**
* Bezpieczne Płatności Allegro z Escrow.
*/
const PAYMENT_OPTION_OTHER = 16;
/**
* Pogrubienie.
*/
const OPTION_BOLD = 1;
/**
* Miniaturka.
*/
const OPTION_THUMB = 2;
/**
* Podświetlenie.
*/
const OPTION_HIGHLIGHT = 4;
/**
* Wyróżnienie.
*/
const OPTION_PREMIUM = 8;
/**
* Strona kategorii.
*/
const OPTION_CATEGORY = 16;
/**
* Strona główna.
*/
const OPTION_HOME = 32;
/**
* Wyszykiwanie któregokolwiek wyrazu.
*/
const SEARCH_OPTION_ANY = 1;
/**
* Wyszukuj w opisach.
*/
const SEARCH_OPTION_DESCRIPTION = 2;
/**
* Tylko nowe aukcje.
*/
const SEARCH_OPTION_NEWONLY = 4;
/**
* Tylko aukcje "Kup Teraz".
*/
const SEARCH_OPTION_BUYNOWONLY = 8;
/**
* Uwzględniaj także zakończone aukcje.
*/
const SEARCH_OPTION_CLOSEDTOO = 16;
/**
* Wyszukuj aukcji z miasta użytkownika.
*/
const SEARCH_OPTION_SESSIONCITY = 32;
/**
* Wyszukuj aukcji z województwa użytkownika.
*/
const SEARCH_OPTION_SESSIONSTATE = 64;
/**
* Sortowanie według daty zakończenia.
*/
const ORDERBY_ENDING = 1;
/**
* Sortowanie według ilości ofert.
*/
const ORDERBY_BIDS = 2;
/**
* Sortowanie według ceny.
*/
const ORDERBY_PRICE = 4;
/**
* Sortowanie według nazwy.
*/
const ORDERBY_NAME = 8;
/**
* Sortowanie rosnąco.
*/
const ORDER_ASC = 0;
/**
* Sortowanie malejąco.
*/
const ORDER_DESC = 1;
/**
* Automatycznie tworzy klienta dla interfejsu Allegro WebAPI.
*/
public function __construct()
{
parent::__construct('http://webapi.allegro.pl/uploader.php?wsdl');
}
/**
* Redukuje obraz do wielkości nadającej się do przesyłu.
*
* @param string $url URL obrazka (lokalne, albo sieciowe).
* @return string Binarna zawartość obrazka w formacie JPEG.
*/
public static function resize($url)
{
$image = file_get_contents($url);
// właśnie tutaj używamy Base64 ręcznie, ale nigdzie indziej!
while( strlen( base64_encode($image) ) > 200000)
{
$temp = imagecreatefromstring($image);
$x = ceil(0.9 * imagesx($temp) );
$y = ceil(0.9 * imagesy($temp) );
$image = imagecreatetruecolor($x, $y);
imagecopyresized($image, $temp, 0, 0, 0, 0, $x, $y, imagesx($temp), imagesy($temp) );
imagejpeg($image, 'temp.jpg', 75);
$image = file_get_contents('temp.jpg');
unlink('temp.jpg');
}
return $image;
}
}
// nasze dane
$config = array(
'login' => '***',
'password' => '***',
'apiKey' => '***'
);
// dla serwisu testowego wybierz WebAPISoapClient::COUNTRY_TESTWEBAPI
$country = WebAPISoapClient::COUNTRY_TESTWEBAPI;
try
{
$client = new WebAPISoapClient();
// pobieranie wersji WebAPI
$version = $client->doQuerySysStatus(WebAPISoapClient::QUERY_ALLEGROWEBAPI, $country, $config['apiKey']);
// właściwe logowanie do serwisu
$session = $client->doLogin($config['login'], $config['password'], $country, $config['apiKey'], $version['ver-key']);
}
catch(SoapFault $soapFault)
{
/* obsługa wyjątku */
print '<h2>Krok 2: błąd</h2>';
}
/* ---------------------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------------------- */
// generujemy formularz
$form = new StdClass();
$form->{'search-string'} = 'nic';
$form->{'search-options'} = WebAPISoapClient::SEARCH_OPTION_ANY | WebAPISoapClient::SEARCH_OPTION_SESSIONCITY;
$form->{'search-order'} = WebAPISoapClient::ORDERBY_PRICE;
$form->{'search-order-type'} = WebAPISoapClient::ORDER_ASC;
$form->{'search-country'} = 0;
// 0 oznacza, że wyszukujemy w całym serwisie - ID kategorii możemy pobrać z poprzedniego omówienia problemu importu kategorii
$form->{'search-category'} = 0;
$form->{'search-city'} = '';
$form->{'search-state'} = 0;
$form->{'search-price-from'} = 1;
$form->{'search-price-to'} = '';
// strona wyników liczona od 0
$form->{'search-offset'} = 0;
print_r($session);
// listujemy wszystkie wyniki
do
{
// wysyłamy formularz
//---------------------
//poniżej linijka 275
$search = $client->doSearch($session['session-handle-part'], $form); //LINIJKA 275
$form->{'search-offset'}++;
// listujemy aktualną stronę
foreach($search['search-array'] as $auction)
{
echo ' <tr>
<td>'.$auction->{'s-it-id'}.'</td>
<td><a href="http://allegro.pl/item'.$auction->{'s-it-id'}.'.html">';
// sprawdza, czy aukcja ma miniaturkę do wyświetlenia
if( !empty($auction->{'s-it-thumb-url'}) )
{
echo '<img src="', $auction->{'s-it-thumb-url'}, '" alt="thumbnail" />';
}
echo htmlspecialchars($auction->{'s-it-name'}), '</a></td>
<td>';
// cena aukcyjna
if($auction->{'s-it-price'} > 0)
{
echo htmlspecialchars($auction->{'s-it-price'}, 2, ',', ' ');
}
// cena "Kup Teraz"
else
{
echo htmlspecialchars($auction->{'s-it-buy-now-price'}, 2, ',', ' ');
}
echo '</td>
</tr>';
}
}
// sprawdzamy czy są następne strony
while( $form->{'search-offset'} * 50 < $search['search-count']);
echo ' </tbody>
</table>';
?>
<?php
error_reporting(E_ALL);
/**
* @see http://www.php.net/manual/en/book.soap.php
* @link http://wrzasq.pl/
* @author Wrzasq <wrzasq@gmail.com>
* @copyright 2008 © by Wrzasq
* @license http://www.opensource.org/licenses/bsd-license.php
*/
class WebAPISoapClient extends SoapClient
{
/**
* Kraj - Polska.
*/
const COUNTRY_PL = 1;
/**
* Logowanie do serwisu testwebapi.pl.
*/
const COUNTRY_TESTWEBAPI = 228;
/**
* Zapytanie o wersję Allegro WebAPI.
*/
const QUERY_ALLEGROWEBAPI = 1;
/**
* Czas trwania - 3 dni.
*/
const LIFETIME_3DAYS = 0;
/**
* Czas trwania - 5 dni.
*/
const LIFETIME_5DAYS = 1;
/**
* Czas trwania - 7 dni.
*/
const LIFETIME_7DAYS = 2;
/**
* Czas trwania - 10 dni.
*/
const LIFETIME_10DAYS = 3;
/**
* Czas trwania - 14 dni.
*/
const LIFETIME_14DAYS = 4;
/**
* Koszty pokrywa sprzedający.
*/
const TRANSPORT_COST_SELLER = 0;
/**
* Koszty pokrywa kupujący.
*/
const TRANSPORT_COST_BUYER = 1;
/**
* Przesyłka pocztowa (polecona/paczka).
*/
const TRANSPORT_OPTION_POST = 1;
/**
* Przesyłka pocztowa priorytetowa (polecona/paczka).
*/
const TRANSPORT_OPTION_POSTPRIORITY = 2;
/**
* Przesyłka kurierska.
*/
const TRANSPORT_OPTION_COURIER = 4;
/**
* Odbiór osobisty.
*/
const TRANSPORT_OPTION_PERSONAL = 8;
/**
* Inne.
*/
const TRANSPORT_OPTION_OTHER = 16;
/**
* Zgadzam się na przesłanie przedmiotu za granicę.
*/
const TRANSPORT_OPTION_ABROAD = 32;
/**
* Przedpłata.
*/
const PAYMENT_OPTION_PREPAID = 1;
/**
* Pobranie.
*/
const PAYMENT_OPTION_POSTPAID = 2;
/**
* Płatności Allegro.
*/
const PAYMENT_OPTION_ALLEGRO = 4;
/**
* Bezpieczne Płatności Allegro z Escrow.
*/
const PAYMENT_OPTION_ESCROW = 8;
/**
* Bezpieczne Płatności Allegro z Escrow.
*/
const PAYMENT_OPTION_OTHER = 16;
/**
* Pogrubienie.
*/
const OPTION_BOLD = 1;
/**
* Miniaturka.
*/
const OPTION_THUMB = 2;
/**
* Podświetlenie.
*/
const OPTION_HIGHLIGHT = 4;
/**
* Wyróżnienie.
*/
const OPTION_PREMIUM = 8;
/**
* Strona kategorii.
*/
const OPTION_CATEGORY = 16;
/**
* Strona główna.
*/
const OPTION_HOME = 32;
/**
* Wyszykiwanie któregokolwiek wyrazu.
*/
const SEARCH_OPTION_ANY = 1;
/**
* Wyszukuj w opisach.
*/
const SEARCH_OPTION_DESCRIPTION = 2;
/**
* Tylko nowe aukcje.
*/
const SEARCH_OPTION_NEWONLY = 4;
/**
* Tylko aukcje "Kup Teraz".
*/
const SEARCH_OPTION_BUYNOWONLY = 8;
/**
* Uwzględniaj także zakończone aukcje.
*/
const SEARCH_OPTION_CLOSEDTOO = 16;
/**
* Wyszukuj aukcji z miasta użytkownika.
*/
const SEARCH_OPTION_SESSIONCITY = 32;
/**
* Wyszukuj aukcji z województwa użytkownika.
*/
const SEARCH_OPTION_SESSIONSTATE = 64;
/**
* Sortowanie według daty zakończenia.
*/
const ORDERBY_ENDING = 1;
/**
* Sortowanie według ilości ofert.
*/
const ORDERBY_BIDS = 2;
/**
* Sortowanie według ceny.
*/
const ORDERBY_PRICE = 4;
/**
* Sortowanie według nazwy.
*/
const ORDERBY_NAME = 8;
/**
* Sortowanie rosnąco.
*/
const ORDER_ASC = 0;
/**
* Sortowanie malejąco.
*/
const ORDER_DESC = 1;
/**
* Automatycznie tworzy klienta dla interfejsu Allegro WebAPI.
*/
public function __construct()
{
parent::__construct('http://webapi.allegro.pl/uploader.php?wsdl');
}
/**
* Redukuje obraz do wielkości nadającej się do przesyłu.
*
* @param string $url URL obrazka (lokalne, albo sieciowe).
* @return string Binarna zawartość obrazka w formacie JPEG.
*/
public static function resize($url)
{
$image = file_get_contents($url);
// właśnie tutaj używamy Base64 ręcznie, ale nigdzie indziej!
while( strlen( base64_encode($image) ) > 200000)
{
$temp = imagecreatefromstring($image);
$x = ceil(0.9 * imagesx($temp) );
$y = ceil(0.9 * imagesy($temp) );
$image = imagecreatetruecolor($x, $y);
imagecopyresized($image, $temp, 0, 0, 0, 0, $x, $y, imagesx($temp), imagesy($temp) );
imagejpeg($image, 'temp.jpg', 75);
$image = file_get_contents('temp.jpg');
unlink('temp.jpg');
}
return $image;
}
}
// nasze dane
$config = array(
'login' => '***',
'password' => '***',
'apiKey' => '***'
);
// dla serwisu testowego wybierz WebAPISoapClient::COUNTRY_TESTWEBAPI
$country = WebAPISoapClient::COUNTRY_TESTWEBAPI;
try
{
$client = new WebAPISoapClient();
// pobieranie wersji WebAPI
$version = $client->doQuerySysStatus(WebAPISoapClient::QUERY_ALLEGROWEBAPI, $country, $config['apiKey']);
// właściwe logowanie do serwisu
$session = $client->doLogin($config['login'], $config['password'], $country, $config['apiKey'], $version['ver-key']);
}
catch(SoapFault $soapFault)
{
/* obsługa wyjątku */
print '<h2>Krok 2: błąd</h2>';
}
/* ---------------------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------------------- */
// generujemy formularz
$form = new StdClass();
$form->{'search-string'} = 'nic';
$form->{'search-options'} = WebAPISoapClient::SEARCH_OPTION_ANY | WebAPISoapClient::SEARCH_OPTION_SESSIONCITY;
$form->{'search-order'} = WebAPISoapClient::ORDERBY_PRICE;
$form->{'search-order-type'} = WebAPISoapClient::ORDER_ASC;
$form->{'search-country'} = 0;
// 0 oznacza, że wyszukujemy w całym serwisie - ID kategorii możemy pobrać z poprzedniego omówienia problemu importu kategorii
$form->{'search-category'} = 0;
$form->{'search-city'} = '';
$form->{'search-state'} = 0;
$form->{'search-price-from'} = 1;
$form->{'search-price-to'} = '';
// strona wyników liczona od 0
$form->{'search-offset'} = 0;
print_r($session);
// listujemy wszystkie wyniki
do
{
// wysyłamy formularz
//---------------------
//poniżej linijka 275
$search = $client->doSearch($session['session-handle-part'], $form); //LINIJKA 275
$form->{'search-offset'}++;
// listujemy aktualną stronę
foreach($search['search-array'] as $auction)
{
echo ' <tr>
<td>'.$auction->{'s-it-id'}.'</td>
<td><a href="http://allegro.pl/item'.$auction->{'s-it-id'}.'.html">';
// sprawdza, czy aukcja ma miniaturkę do wyświetlenia
if( !empty($auction->{'s-it-thumb-url'}) )
{
echo '<img src="', $auction->{'s-it-thumb-url'}, '" alt="thumbnail" />';
}
echo htmlspecialchars($auction->{'s-it-name'}), '</a></td>
<td>';
// cena aukcyjna
if($auction->{'s-it-price'} > 0)
{
echo htmlspecialchars($auction->{'s-it-price'}, 2, ',', ' ');
}
// cena "Kup Teraz"
else
{
echo htmlspecialchars($auction->{'s-it-buy-now-price'}, 2, ',', ' ');
}
echo '</td>
</tr>';
}
}
// sprawdzamy czy są następne strony
while( $form->{'search-offset'} * 50 < $search['search-count']);
echo ' </tbody>
</table>';
?>
Proszę o pomoc!