Название проекта:
Составить запрос через Guzzle Client на PHP к сервису
Кто разместил:
Внешний проект с weblancer.net
Открыт:
18-Mar-2024 13:18 GMT
Описание:
<p>Добрый день!</p><p>Нужно помочь составить request запрос через Guzzle client через PHP на GraphQl апи</p><p></p><p>Есть вот такой curl:</p><pre><code>curl 'https://stake.com/_api/graphql' \ -H 'authority: stake.com' \ -H 'accept: */*' \ -H 'accept-language: ru' \ -H 'access-control-allow-origin: *' \ -H 'content-type: application/json' \ -H 'cookie: cf_chl_3=1aa55659d348913; __cf_bm=4hxO3jDGAwyYve4x5_JxrNLmhA._0Iti0S.Hx_aYWgI-1710764820-1.0.1.1-2QLuJ4LAUovTSmbB6KMj312TMK7Kcsk74To9lwrUOt.QTwXjtZa1rpWkDNBWUPF8OBaubxhsXajrIYSmpV58Mg; currency_currency=btc; currency_hideZeroBalances=false; currency_currencyView=crypto; session_info=undefined; fiat_number_format=en; cookie_consent=false; leftSidebarView_v2=expanded; sidebarView=hidden; casinoSearch=; sportsSearch=; sportMarketGroupMap={}; oddsFormat=decimal; cf_clearance=3sWUiNwmMGWAQ2y8f2GAfH9bHw4W9fs9v.Vd1lRmpT0-1710764822-1.0.1.1-EnqGd1_z8raLiVfZvOHmCWBkGG0Xavlg95ej4xGo0Bv4prQc5bu23FeTcqzBapXBW7V.sIpYdFryUPIS1KrlzA; locale=ru; intercom-id-cx1ywgf2=2bd34916-5d76-4287-9388-ef4154869ba5; intercom-session-cx1ywgf2=; intercom-device-id-cx1ywgf2=320c73c3-4379-4b4c-90e2-69d5698be48e; mp_e29e8d653fb046aa5a7d7b151ecf6f99_mixpanel=%7B%22distinct_id%22%3A%20%22%24device%3A18e51879363aee-071ce17f0a98a7-1d525637-1ea000-18e51879363aee%22%2C%22%24device_id%22%3A%20%2218e51879363aee-071ce17f0a98a7-1d525637-1ea000-18e51879363aee%22%2C%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%2Fcasino%2Fgroup%2Fhacksaw-gaming%3F__cf_chl_tk%3DKyRI5ATkMCBqKsFESBDS_annrOdOKvDZXs2guVKVlNo-1710764771-0.0.1.1-1642%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%2Fcasino%2Fgroup%2Fhacksaw-gaming%3F__cf_chl_tk%3DKyRI5ATkMCBqKsFESBDS_annrOdOKvDZXs2guVKVlNo-1710764771-0.0.1.1-1642%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%7D%2C%22__mpus%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpr%22%3A%20%5B%5D%2C%22__mpap%22%3A%20%5B%5D%7D' \ -H 'origin: https://stake.com' \ -H 'referer: https://stake.com/ru/casino/group/hacksaw-gaming' \ -H 'sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"' \ -H 'sec-ch-ua-arch: "x86"' \ -H 'sec-ch-ua-bitness: "64"' \ -H 'sec-ch-ua-full-version: "122.0.6261.112"' \ -H 'sec-ch-ua-full-version-list: "Chromium";v="122.0.6261.112", "Not(A:Brand";v="24.0.0.0", "Google Chrome";v="122.0.6261.112"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-model: ""' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-ch-ua-platform-version: "12.6.8"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36' \ -H 'x-language: ru' \ --data-raw $'{"query":"query SlugKuratorGroup($slug: String\u0021, $limit: Int\u0021, $offset: Int\u0021, $showGames: Boolean = true, $sort: GameKuratorGroupGameSortEnum = popular, $showProviders: Boolean = false, $filterIds: , $isActivePlayersFeatureFlagOn: Boolean = false, $language: LanguageEnum = en) {\\n slugKuratorGroup(slug: $slug) {\\n ...GameKuratorGroup\\n gameCount(filterIds: $filterIds, language: $language)\\n groupGamesList(\\n limit: $limit\\n offset: $offset\\n sort: $sort\\n filterIds: $filterIds\\n language: $language\\n ) @include(if: $showGames) {\\n ...GameKuratorGroupGame\\n game {\\n playerCount @include(if: $isActivePlayersFeatureFlagOn)\\n }\\n }\\n filtersProvider: filters(type: provider) @include(if: $showProviders) {\\n count\\n group {\\n id\\n translation\\n gameCount\\n }\\n }\\n }\\n}\\n\\nfragment GameCardKuratorGame on GameKuratorGame {\\n id\\n name\\n slug\\n thumbnailUrl\\n isBlocked\\n groupGames {\\n group {\\n translation\\n type\\n id\\n slug\\n }\\n }\\n}\\n\\nfragment GameKuratorGroup on GameKuratorGroup {\\n id\\n slug\\n translation\\n icon\\n type\\n}\\n\\nfragment GameKuratorGroupGame on GameKuratorGroupGame {\\n id\\n game {\\n ...GameCardKuratorGame\\n }\\n}\\n","variables":{"slug":"recommended-slots","limit":30,"sort":"popular","showGames":true,"offset":0}}'</code></pre><p></p><p>Через Postman он отдает нормальный респонз, но когда делаю на php, то в респонзе постоянно ошибка:</p><pre><code>Client error: `POST https://stake.com/_api/graphql` resulted in a `400 Bad Request` response:\n {"message":"unknown","isSafeError":true}</code></pre><p></p><p>Что я делаю не так?</p><p></p><p>Моя попытка отправить запрос:</p><p></p><pre><code> public function handle(): void { $qraphQl = ' query; query SlugKuratorGroup($slug: String!, $limit: Int!, $offset: Int!, $showGames: Boolean = true, $sort: GameKuratorGroupGameSortEnum = popular, $showProviders: Boolean = false, $filterIds: , $isActivePlayersFeatureFlagOn: Boolean = false, $language: LanguageEnum = en) { slugKuratorGroup(slug: $slug) { ...GameKuratorGroup gameCount(filterIds: $filterIds, language: $language) groupGamesList( limit: $limit offset: $offset sort: $sort filterIds: $filterIds language: $language ) @include(if: $showGames) { ...GameKuratorGroupGame game { playerCount @include(if: $isActivePlayersFeatureFlagOn) } } filtersProvider: filters(type: provider) @include(if: $showProviders) { count group { id translation gameCount } } } } fragment GameCardKuratorGame on GameKuratorGame { id name slug thumbnailUrl isBlocked groupGames { group { translation type id slug } } } fragment GameKuratorGroup on GameKuratorGroup { id slug translation icon type } fragment GameKuratorGroupGame on GameKuratorGroupGame { id game { ...GameCardKuratorGame } } '; $cookieParser = new CookieParser; $cookie = $cookieParser::fromString('currency_currency=btc; currency_hideZeroBalances=false; currency_currencyView=crypto; currency_bankingCurrencies=; session_info=undefined; fiat_number_format=en; sidebarView=hidden; sportsSearch=; sportMarketGroupMap={}; oddsFormat=decimal; locale=ru; intercom-id-cx1ywgf2=fa28ebad-4de3-4fcf-a73d-fb30f8caaf8b; intercom-session-cx1ywgf2=; intercom-device-id-cx1ywgf2=e49f924a-7e65-4aeb-ad46-c951d831a34c; cookie_consent=true; casinoSearch=; cf_clearance=93tJNV1c0E3_IZReWOasBVWWd.Dlx0bMeNaRvtAyEBQ-1710700146-1.0.1.1-oMFBorHTLXRLJidFOrO72T9yGvSjKsLZdY6j7v6lxeOtZ.LdMuFg2nEFYEDO0WIFpQrPhOtzcsJ7Klz4J45Bcg; g_state={"i_p":1711307189489,"i_l":3}; leftSidebarView_v2=expanded; __cf_bm=7hQVlUfBJbMIr6PDirSQiYXVxPg6m7ekIhzTfoNEEXc-1710703806-1.0.1.1-5J3CPoPkjVXcmNo3YEV8ANDI2Cn34Z3zEpZYwxjLCb4WI1V_hZ52PwDjsvY9P4brNGRphPXXkU_kEPdOo_vXWA; mp_e29e8d653fb046aa5a7d7b151ecf6f99_mixpanel=%7B%22distinct_id%22%3A%20%22%24device%3A18e33330d6681f-002f8430cc4cd5-1d525637-1ea000-18e33330d6681f%22%2C%22%24device_id%22%3A%20%2218e33330d6681f-002f8430cc4cd5-1d525637-1ea000-18e33330d6681f%22%2C%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%3F__cf_chl_tk%3Du9xXl039mQbVZQpJQguPdTVQR8sX7eI05v7nVC9mzyo-1710255959-0.0.1.1-1557%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fstake.com%2Fru%3F__cf_chl_tk%3Du9xXl039mQbVZQpJQguPdTVQR8sX7eI05v7nVC9mzyo-1710255959-0.0.1.1-1557%22%2C%22%24initial_referring_domain%22%3A%20%22stake.com%22%7D%2C%22__mpus%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpr%22%3A%20%5B%5D%2C%22__mpap%22%3A%20%5B%5D%2C%22%24search_engine%22%3A%20%22google%22%7D'); $cookieJar = CookieJar::fromArray($cookie->toArray(), 'stake.com'); try { $response = $this->client->request( Request::METHOD_POST, 'https://stake.com/_api/graphql', , RequestOptions::COOKIES => $cookieJar, RequestOptions::FORM_PARAMS => , JSON_THROW_ON_ERROR) ], ], ); } catch (\Throwable $exception) { dd($exception->getMessage()); } dd($response->getBody()->getContents()); } </code></pre><p></p><p>Нужно написать request к <a href="https://stake.com/_api/graphql">https://stake.com/_api/graphql</a> и указать что. делал не так. </p>
Project ID:
4635877
Категория проекта:
Бюджет проекта: