# Verwendung von GuzzleHttp

**URL:** <https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441>\
**Category:** Programmierung\
**Created:** [8. Mai 2019 um 10:43 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441 "2019-05-08T10:43:40Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hobel](https://avatars.discourse-cdn.com/v4/letter/h/b77776/32.png) [@Hobel](https://forum.shopware.com/u/Hobel)\
**Post date:** [8. Mai 2019 um 10:43 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/1 "2019-05-08T10:43:40Z")

</div>

Ich möchte in meinem Plugin gern Guzzle verwenden, habe gesehen, dass es auch im shopware/vendor-Verzeichnis liegt.

Was muss ich tun, um darauf zugreifen zu können? Oder muss jedes Plugin komplett alle Bibliotheken selbst mitbringen?

Ein einfacher Aufruf (entsprechend Doku hier:&nbsp;[https://guzzle.readthedocs.io/en/stable/quickstart.html](https://guzzle.readthedocs.io/en/stable/quickstart.html)) endet im Fehler: _Uncaught Error: Call to undefined method GuzzleHttp\Client::request()_

```
$client = new GuzzleHttp\Client(['base_url' => 'http://localhost:8080/']);
$response = $client->request('GET', 'foobar', ['query' => ['parameter' => 'wert']]);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [8. Mai 2019 um 11:03 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/2 "2019-05-08T11:03:54Z")

</div>

Im Plugin vielleicht ganz oben „use GuzzleHttp;“ vergessen?

---

<div class="post-metadata">

**Author:** ![Hobel](https://avatars.discourse-cdn.com/v4/letter/h/b77776/32.png) [@Hobel](https://forum.shopware.com/u/Hobel)\
**Post date:** [8. Mai 2019 um 11:21 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/3 "2019-05-08T11:21:59Z")

</div>

Laut IDE ist das „use“ unnötig, weil GuzzleHttp der Toplevel-Namespace ist. Macht leider auch keinen Unterschied in der Fehlermeldung.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [8. Mai 2019 um 12:10 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/4 "2019-05-08T12:10:43Z")

</div>

Vielleicht wird ja so ein Schuh daraus:

```
$response = $client->createRequest('GET', 'foobar', ['query' => ['parameter' => 'wert']]);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![paddelboot](https://avatars.discourse-cdn.com/v4/letter/p/e95f7d/32.png) [@paddelboot](https://forum.shopware.com/u/paddelboot)\
**Post date:** [8. Mai 2019 um 12:17 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/5 "2019-05-08T12:17:24Z")

</div>

\>_Uncaught Error: Call to undefined method GuzzleHttp\Client::request()_

Die Fehlermeldung kommt daher, dass die Dokumentation für Guzzle 6.x gilt, welches ein anderes Interface verwendet. Meine Frage ([https://forum.shopware.com/discussion/60525/konflikt-mit-guzzle-versionen#latest](https://forum.shopware.com/discussion/60525/konflikt-mit-guzzle-versionen#latest)) geht ja in eine ähnliche Richtung; ich will in meinem Plugin die aktuelle Version von Guzzle verwenden, um nicht meine Implementation auf Guzzle 5.x umschreiben zu müssen…

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [8. Mai 2019 um 16:34 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/6 "2019-05-08T16:34:33Z")

</div>

Hey,

ihr müsst, wenn ihr direkt raw Guzzle benutzen wollt, 5 benutzen. Eigentlich ist es mittlerweile üblich PSR7 ([https://www.php-fig.org/psr/psr-18/](https://www.php-fig.org/psr/psr-18/))&nbsp; oder Httpplug ([http://httplug.io/](http://httplug.io/)) zu verwenden, um garnicht solche Probleme zu haben.

---

<div class="post-metadata">

**Author:** ![Hobel](https://avatars.discourse-cdn.com/v4/letter/h/b77776/32.png) [@Hobel](https://forum.shopware.com/u/Hobel)\
**Post date:** [9. Mai 2019 um 05:50 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/7 "2019-05-09T05:50:05Z")

</div>

Danke euch für die Antworten! ![Smile](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/smile.png "Smile")

Ich werde mal schauen, welche der drei Optionen ich nehme.

---

<div class="post-metadata">

**Author:** ![paddelboot](https://avatars.discourse-cdn.com/v4/letter/p/e95f7d/32.png) [@paddelboot](https://forum.shopware.com/u/paddelboot)\
**Post date:** [9. Mai 2019 um 09:35 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/8 "2019-05-09T09:35:16Z")

</div>

> [@Shyim schrieb:](https://forum.shopware.com/profile/20792/Shyim "Shyim")
> 
> Hey,
> 
> ihr müsst, wenn ihr direkt raw Guzzle benutzen wollt, 5 benutzen. Eigentlich ist es mittlerweile üblich PSR7 ([https://www.php-fig.org/psr/psr-18/](https://www.php-fig.org/psr/psr-18/))&nbsp; oder Httpplug ([http://httplug.io/](http://httplug.io/)) zu verwenden, um garnicht solche Probleme zu haben.

Es ist auch ein Problem von Shopware, denke ich. Einerseits soll ein Plugin alle Abhängigkeiten mitbringen, andererseits führt genau das zu Konflikten. Und sollten PHP-Namespaces nicht genau solche Konflikte auch vermeiden?

&nbsp;

**PS** : Guzzle nutzt das PSR-7 - Interface: [Guzzle and PSR-7 — Guzzle Documentation](http://docs.guzzlephp.org/en/stable/psr7.html)

---

<div class="post-metadata">

**Author:** ![paddelboot](https://avatars.discourse-cdn.com/v4/letter/p/e95f7d/32.png) [@paddelboot](https://forum.shopware.com/u/paddelboot)\
**Post date:** [9. Mai 2019 um 13:46 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/9 "2019-05-09T13:46:05Z")

</div>

Bezüglich Httplug: Ich habe mich jetzt 2 Stunden durch die verschiedenen Dokumentationen gelesen, aber vor lauter Discovery, Interfaces, Adaptern, Clienten, Factories usw. kommt da nur langsam ein Durchblick zustande.

**Hat jemand ein Codebeispiel bzw. eine Implementierung von Httplug in Shopware** (oder irgendeiner anderen Applikation)? Danke im Voraus.

&nbsp;

Paddelboot

---

<div class="post-metadata">

**Author:** ![WernerBu](https://avatars.discourse-cdn.com/v4/letter/w/71c47a/32.png) [@WernerBu](https://forum.shopware.com/u/WernerBu)\
**Post date:** [14. Mai 2019 um 09:32 UTC](https://forum.shopware.com/t/verwendung-von-guzzlehttp/59441/10 "2019-05-14T09:32:10Z")

</div>

Hallo Zusammen,

oder man benutzt den GuzzleHttpClient von Shopware, der als Service unter ‘http\_client’ registriert ist.

&nbsp;Damit kann man sehr einfach get, post, put… Aufrufe machen. URL-Parameter kann man dann mittels `http_build_query`

generieren, macht Guzzle ja genauso.

&nbsp;

Viele Grüße,

Werner.
