Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][soap] problem z połączeniem do webAPI Allegro
squasher
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.09.2010

Ostrzeżenie: (0%)
-----


Witam,

walczę już od paru dni z umieszczeniem skryptu na serwerze. Lokalnie na komputerze na Windowsie mam zainstalowany Webserv i z poziomu przegladarki http://localhost/skrypt.php wszystko pięknie chodzi. Nie ma problemu do pobrania informacji z allegro przez funkcje webAPI Allegro.

Fragment kodu po którym się wszystko psuje:

$soap=new SoapClient('http://webapi.allegro.pl/uploader.php?wsdl');
$userId=$soap->doGetUserId(1,$allegro_user,'',$webAPI_KEY);

a oto błąd z przeglądarki :
Fatal error: Call to undefined function: dogetuserid() in /var/www/sites/skrypt.php on line 14

Nie sądzę aby było coś tu nie tak. Wydaje mi się że to problem z poprawnym umieszczeniem plików pakietu nusoap. Wszystkie pliki znajdują się razem na serwerze w tym samym katalogu.

Próbowałem umieszczać skrypt na kilku różnych serwerach i wszędzie ten sam problem, albo też inny :
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 /home/sites/f/fi/fin/finebuy.za.pl/panel_lista.php:7 Stack trace: #0 /home/sites/f/fi/fin/finebuy.za.pl/panel_lista.php(7): SoapClient->SoapClient('http://webapi.a...') #1 {main} thrown in /home/sites/f/fi/fin/finebuy.za.pl/panel_lista.php on line 7

Bez waszej pomocy poddaję się bo już zabrakło pomysłów.
Pozdrawiam
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
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 /home/sites/f/fi/fin/finebuy.za.pl/panel_lista.php:7 Stack trace: #0 /home/sites/f/fi/fin/finebuy.za.pl/panel_lista.php(7): SoapClient->SoapClient('http://webapi.a...') #1 {main} thrown in /home/sites/f/fi/fin/finebuy.za.pl/panel_lista.php on line 7

za.pl, to był darmowy hosting, z tego co pamiętam. (IMG:style_emoticons/default/winksmiley.jpg)

Na darmowych zapomnij. Zablokowana większość pożytecznych rzeczy.
Go to the top of the page
+Quote Post
squasher
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 9.09.2010

Ostrzeżenie: (0%)
-----


Tak ten akurat jest darmowy. Ja jednak cały czas staram się wrzucić skrypt na serwer płatny. Wydaje mi się że o obsługę SOAP na serwerze chodzi i że należy, albo zainstalować ja przez administratora (ta opcja chyba niemożliwa), albo jakoś posłużyć się innymi bibliotekami jak nuSOAP, jednakże nie wiem jak do końca to zrobić. Dorzuciłem pliki nuSOAP do katalohu ze skryptem, a w skrypcie dodałem :

require_once 'nusoap.php';

jednakże nadal nie działa
Go to the top of the page
+Quote Post
jang
post
Post #4





Grupa: Zarejestrowani
Postów: 101
Pomógł: 11
Dołączył: 2.02.2005

Ostrzeżenie: (0%)
-----


Cytat(squasher @ 10.09.2010, 00:07:00 ) *
Dorzuciłem pliki nuSOAP do katalohu ze skryptem, a w skrypcie dodałem :

require_once 'nusoap.php';

jednakże nadal nie działa

http://webapi.allegro.pl/uploader.php?apiMethod=doLogin#

Zobacz ostatnie (u dołu) dwa wpisy. W SOAP jest tak:
  1. $session = $client->doLogin($config['login'], ... itd.

a w nuSOAP jest tak :
  1. $response = $soap->call("doLogin", $msg);
Go to the top of the page
+Quote Post
php83
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.08.2017

Ostrzeżenie: (0%)
-----


Przesyłam wycinek mojego kodu, może komuś się przyda:
Kod
class allegro_wsdl
{
  public $error_msg;
  protected $klient;

  public function __construct($login,$haslo,$kraj,$klucz)
  {
    global $cur;
    $this->error_msg= array();

    switch($cur){
      case 'CZK': $adres="http://webapi.aukro.cz/uploader.php?wsdl";break;
      case 'EUR': $adres="http://webapi.aukro.sk/uploader.php?wsdl";break;
      default:    $adres="http://webapi.allegro.pl/uploader.php?wsdl";break;      
    }
    
    $this->klient = new SoapClient($adres, array('trace' => TRUE));
    try {
      $response=$this->klient->doQuerySysStatus(1, $kraj, $klucz);
    }
    catch (SoapFault $soapFault) {
        echo "Request :<br>", htmlentities($client->__getLastRequest()), "<br>";
        echo "Response :<br>", htmlentities($client->__getLastResponse()), "<br>";

    $this->error_msg[]=$soapFault->{'faultstring'}.$soapFault->{'faultcode'};
    return false;
    }
    $verkey=$response['ver-key'];
    try {
      $response= $this->klient->doLogin($login, $haslo, $kraj, $klucz, $verkey);
    }
    catch (SoapFault $soapFault) {
        echo "Request :<br>", htmlentities($client->__getLastRequest()), "<br>";
        echo "Response :<br>", htmlentities($client->__getLastResponse()), "<br>";

    $this->error_msg[]=$soapFault->{'faultstring'}.$soapFault->{'faultcode'};
    return false;
    }
    
    return $sesja=$response['session-handle-part'];
  }


Ten post edytował php83 1.08.2017, 09:14:43
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ale jakbyś zobaczył dokumentację Allegro to byś wiedział że taka metoda występuje: http://allegro.pl/webapi/documentation.php/show/id,102
Więc problem z SOAP jest jak najbardziej...
Go to the top of the page
+Quote Post
php83
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.08.2017

Ostrzeżenie: (0%)
-----


Tak, masz racje, sorka, mój błąd, edytowałem posta i macie ode mnie wycinek mojego kodu, odpowiadający za logowanie.

Informuję, że w ideale powinno korzystać się z szyfrowanej funkcji dologin ale jeszcze nie rozpracowałem jak to zrobić w php.
Jak ktoś to rozpracował będę wdzięczny za podzielenie się kodem.

Mam rozpracowaną obsługę połowy funkcji allegro, odpowiadającą za: wystawianie, listowanie i podmienianie aukcji, oraz za ściąganie do sklepu danych złożonego przez klienta zamówienia. Zrobiłem w PHP tzw. dalsze aukcje, czyli zdjęcia z tytułem i ceną. Tak więc mogę się podzielić cenną radą. Pozdr
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ja też ostatnio miałem podobne problemy mimo że wszystko działało przez ostatni rok. W najnowszych wersjach PHP są fixy do soap. Coś jest nie tak z cachem wsdla. Jest źle wczytywany.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A weź... z SOAP to i ja ostatnio miałem problemy. Miałem skrypt który po SSL podpina się pod serwer i zaciąga WSDL. Pod php 7 nie działało, a 5 jak ta lala... Problem był w tym że w php7 wywalało problem z SSL i czymś tam jeszcze.
Go to the top of the page
+Quote Post
php83
post
Post #10





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 1.08.2017

Ostrzeżenie: (0%)
-----


Solved? PHP SOAP problem z połączeniem do webAPI Allegro

Jak przestudiujecie dokumentację webAPI i zerkniecie na przykładowe rozwiązania, to zobaczycie, że do niedawna parametry musiały/mogły być układane wg. określonej kolejności.
Teraz trzeba podać odpowiednia tablice:

  1. $this->klient = new SoapClient("https://webapi.allegro.pl/uploader.php?wsdl", array('trace' => TRUE));
  2. try {
  3. $response=$this->klient->doQuerySysStatus(array('sysvar' => 1, 'countryId' => $kod_kraju, 'webapiKey' => $klucz_webAPI));
  4. }
  5. catch (SoapFault $soapFault) {
  6. // echo "Request :<br>", htmlentities($client->__getLastRequest()), "<br>";
  7. // echo "Response :<br>", htmlentities($client->__getLastResponse()), "<br>";
  8.  
  9. $this->error_msg[]=$soapFault->{'faultstring'}.$soapFault->{'faultcode'};
  10.  
  11. return false;
  12. }
Go to the top of the page
+Quote Post
Pyton_000
post
Post #11





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Eeee?? Z tego co pamiętam to zawsze trzeba było podać jakąś poj... tablicę z nazwami które kompletnie nic nie mówiły. Allegro pod tym względem kuleje.
Go to the top of the page
+Quote Post
sabat24
post
Post #12





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Wcześniej trzeba było dostarczyć parametry do funkcji, więc np. powyższy kod wyglądał tak:

  1. return $this->_client->doQuerySysStatus(
  2. $Component,
  3. self::COUNTRY_CODE,
  4. $this->_config['allegro_key']
  5. );
Go to the top of the page
+Quote Post
Pyton_000
post
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Hmm.... Te api allegro ssie totalnie... 1 raz chyba robiłem z nimi integrację i wincyj nie chce. Może kiedyś dokończą swoje RestApi...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.08.2025 - 20:12