Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]CURL - pierwszy w życiu
Forum PHP.pl > Forum > Przedszkole
phpamator
Panie i Panowie,
Przyszedł taki moment kiedy koniecznym stało się użycie nieco bardziej zaawansowanych mechanizmów niż te do tej pory ale jak zwykle nie obyło się bez problemów
i dlatego piszę kolejną prośbę i podanie koła .... ratunkowego smile.gif

Otóż,
z odległego serwera usiłuję pobierać dane, jednak albo czegoś nie zrozumiałem albo gdzieś popełnilem błąd i nie widzę.
Kod:
  1.  
  2. $url = "https://moj_server/restapi/pralka/wirówka/get-product/";
  3.  
  4. $ch = curl_init($url);
  5.  
  6. $parametry = array("jezyk" => "de", "ident" => '1234' );
  7.  
  8. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  9.  
  10. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
  11.  
  12. curl_setopt($ch, CURLOPT_HEADER, 1);
  13.  
  14. curl_setopt($ch, CURLOPT_USERPWD, "$login:$haslo");
  15.  
  16. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  17.  
  18. curl_setopt($ch, CURLOPT_POST, 1);
  19.  
  20. curl_setopt($ch, CURLOPT_POSTFIELDS, $parametry);
  21.  
  22. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  23.  
  24. $return = curl_exec($ch);
  25.  
  26. curl_close($ch);
  27.  


W odpowiedzi dostaję .... to:
HTTP/2 405 server: nginx date: Mon, 27 Apr 2020 14:39:29 GMT content-type: application/json content-length: 54 vary: Authorization cache-control: no-cache, private allow: GET {"error":{"code":405,"message":"Method Not Allowed"}}

Co robię niewłaściwie ?

pozdrawiam
phpamator
nospor
Dane masz wyslac GETem a nie POSTem
phpamator
Dzięki na podpowiedź nospor, mógł byś rozjaśnić? obczytałem się na temat requestów curlem GET i według przykładów różnica polega jedynie na ilości użytych setoptów/CURLOPTów co prowadziło mnie do usunięcia tych które uznałem za zbędne co nie rozwiązało problemu i dalej dostaję ten sam błąd.

  1. $ch = curl_init($url);
  2.  
  3. // Execute
  4. curl_exec($ch);
  5.  
  6. // Check if any error occurred
  7. if (!curl_errno($ch)) {
  8. $info = curl_getinfo($ch);
  9. //echo 'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n";
  10. }
  11. curl_setopt($ch, CURLOPT_URL,$url);
  12. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  13. curl_setopt($ch, CURLOPT_USERPWD, "$kluczAPI:$sekretAPI");
  14. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  15. $data = curl_exec($ch);
  16. $return = $data;
  17. curl_close($ch);
  18.  

już czaję ....
ło mateńko jaki ja "gupi"
...

OK, a jak w tej sytuacji mogę manipulować parametrami, żeby za każdym razem nie tworzyć całego URL'a tylko dodawać parametry, w przypadku POST mam postfields a w przypadku GET ?
Oczywiście mogę sobie to spokojnie rozwiązać przez generowanie mojego urla ale tak z ciekawości pytam bo nie zauważyłem ..


dzięki
viking
Użyj jak człowiek zewnętrznej biblioteki np guzzle zamiast kombinować.
phpamator
Guzzle ?
OK, chyba warto chociaż zobaczyć co to takiego tongue.gif
Dzięki viki-ngu
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.