Не удается получить значение элемента с помощью Symfony Dom Crawler

Я получаю URL, используя метод GOST POST. его работа и возвращение страницы, которую я хочу. но проблема в том, что когда я хочу получить значение элемента ввода в форме на этой странице, сканер ничего не возвращает. Я не знаю почему.

PHP:

<?php
use Symfony\Component\DomCrawler\Crawler;
use Guzzle\Http\Client;

$client = new Client();

$request = $client->get("https://example.com");
$response = $request->send();
$getRequest = $response->getBody();
$cookie = $response->getHeader("Set-Cookie");$request = $client->post('https://example.com/page_example.php', array(
'Content-Type' => 'application/x-www-form-urlencoded',
'Cookie' => $cookie
), array(
'param1' => 5,
'param2' => 10,
'param3' => 20
));

$response = $request->send();
$pageHTML = $response->getBody();

//fetch orderID
$crawler = new Crawler($pageHTML);
$orderID = $crawler->filter("input[name=orderId]")->attr('value');//there is only one element with this name

echo $orderID; //returns nothing

Что я должен делать ?

1

Решение

Вам не нужно создавать сканер:

$crawler = $client->post('https://example.com/page_example.php', array(
'Content-Type' => 'application/x-www-form-urlencoded',
'Cookie' => $cookie
), array(
'param1' => 5,
'param2' => 10,
'param3' => 20
));
$orderID = $crawler->filter("input[name=orderId]")->attr('value');

Это предполагает, что ваш POST не перенаправляется, если он перенаправлен, вы должны добавить его перед вызовом функции фильтра:

$this->assertTrue($client->getResponse()->isRedirect());
$crawler = $client->followRedirect();
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector