Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zacząć zabawę z WebApi?
Forum PHP.pl > Forum > PHP
MESSIAH :)
Mam problem, z którym nie mogę sobie poradzić. Zacząłem tutorial z allegro (jest z przed 2 lat i nie aktualizowany). Szukam jakiegoś prostego skryptu bym mógł porównać moją wersję.
Kod
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR:Parsing WSDL: Couldn't load from 'http://webapi.allegro.pl/uploader.php?wsdl' : failed to load external entity "http://webapi.allegro.pl/uploader.php?wsdl" in C:\xampp\htdocs\allegro1.php:14 Stack trace: #0 C:\xampp\htdocs\allegro1.php(14): SoapClient->SoapClient('http://webapi.a...') #1 C:\xampp\htdocs\allegro1.php(22): AllegroWebAPISoapClient->__construct() #2 {main} thrown in C:\xampp\htdocs\allegro1.php on line 14

  1. <?php
  2.  
  3. define('ALLEGRO_LOGIN', '***tuJestMojLogin***');
  4. define('ALLEGRO_PASSWORD', '***tuJestMojeHaslo***');
  5. define('ALLEGRO_KEY', '***tuJestMojKlucz***');
  6. define('ALLEGRO_COUNTRY', AllegroWebAPISoapClient::COUNTRY_PL);
  7.  
  8. class AllegroWebAPISoapClient extends SoapClient
  9. {
  10. const COUNTRY_PL = 228;
  11.  
  12. public function __construct()
  13. {
  14. parent::__construct('http://webapi.allegro.pl/uploader.php?wsdl');
  15. }
  16. }
  17.  
  18. // pobieramy nasz klucz wersji
  19. $allegroVerKey = file_get_contents('.verkey');
  20.  
  21. // łączymy się z Allegro WebAPI
  22. $client = new AllegroWebAPISoapClient();
  23.  
  24. try
  25. {
  26. try
  27. {
  28. // próba logowania
  29. $session = $client->doLoginEnc(ALLEGRO_LOGIN, base64_encode( hash('sha256', ALLEGRO_PASSWORD, true) ), ALLEGRO_COUNTRY, ALLEGRO_KEY, $allegroVerKey);
  30. }
  31. catch(SoapFault $error)
  32. {
  33. // błąd niepoprawnego klucza wersji pozwala nam zauważyć fakt iż coś w serwisie się zmieniło
  34. if($error->faultcode == 'ERR_INVALID_VERSION_CAT_SELL_FIELDS')
  35. {
  36. // pobieramy aktualny klucz wersji
  37. $version = $client->doQuerySysStatus(1, ALLEGRO_COUNTRY, ALLEGRO_KEY);
  38. $allegroVerKey = $version['ver-key'];
  39.  
  40. /* tutaj wykonujemy swoje operacje uaktualniające */
  41.  
  42. // zapisujemy klucz wersji do pliku
  43. file_put_contents('.verkey', $allegroVerKey);
  44.  
  45. // ponowna próba logowania, już z nowym kluczem
  46. $session = $client->doLoginEnc(ALLEGRO_LOGIN, base64_encode( hash('sha256', ALLEGRO_PASSWORD, true) ), ALLEGRO_COUNTRY, ALLEGRO_KEY, $allegroVerKey);
  47. }
  48. // każdy inny błąd to już poważny problem
  49. else
  50. {
  51. throw $error;
  52. }
  53. }
  54.  
  55. // udało nam się zalogować
  56. echo 'Logowanie poprawne. Uzyskany klucz sesji to: ', $session['session-handle-part'];
  57. }
  58. catch(SoapFault $error)
  59. {
  60. echo 'Błąd ', $error->faultcode, ': ', $error->faultstring, "n";
  61. }
  62. ?>


Jak ja mam do tego podejśćquestionmark.gif
phpion
Spróbuj wysłać żądanie na https, a nie samo http.
MESSIAH :)
Działa ale tylko na płatnym serwerze. Natomiast na localhost wywala zawsze ten sam błąd - jak to naprawić?
GeeryS
Ja ten problem w XAMPP 1.7.7 rozwiązałem tak :

Należy :

1. włączyć OPENSSL, w tym celu wstawić w PHP.INI :

extension=php_openssl.dll

2. Następnie ponownie uruchomić Apache.


To wystarczyło.
W podglądzie ustawień PHP ( http://localhost/xampp/phpinfo.php) widoczna jest już sekcja OPPENSSL z ustawieniem ENABLED.

OPENSSL
OpenSSL support enabled
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.