/ / Enviar solicitud de publicación con los mismos nombres de parámetros en Goutte - php, symfony, httprequest, goutte

Enviar solicitud de publicación con los mismos nombres de parámetros en Goutte - php, symfony, httprequest, goutte

Un sitio en el que estoy "raspando" usa el mismo nombre para dos parámetros, así que me gustaría hacer algo como esto:

$params = array("dates" => "20140414", "o" => "192382", "o" => "213003" etc...);
$crawler = $client->request("POST", $url, $params);

Sin embargo, como no es posible tener dosClaves idénticas en una matriz me encontré con problemas. ¿Es posible realizar una solicitud de este tipo en Goutte (Symfony "s BrowserKit)? Aquí hay una pantalla de impresión de la solicitud exacta que deseo realizar desde la pestaña de red de Chrome".

enter image description here

Respuestas

2 para la respuesta № 1

Para hacer esto con Goutte (o Guzzle, tiene el mismo problema), debe crear su propia solicitud POST de formulario en lugar de usar $formParameters. Esto requiere configurar manualmente el tipo de contenido y enviar los parámetros como el cuerpo de la solicitud.

Digamos que quieres enviar los siguientes parámetros:

["foo" => 1, "bar" => 2, "bar"=> 3, "baz" => 4]

Así es como podría verse tu código

$queryParams = [
"foo=1",
"bar=2",
"bar=3",
"baz=4",
];

$content = implode("&", $queryParams);

//This produces foo=1&bar=2&bar=3&baz=4

/** @var GoutteClient $client */
$crawler = $client->request("POST", "http://example.com/post.php", [], [], ["HTTP_CONTENT_TYPE" => "application/x-www-form-urlencoded"], $content);

Tenga en cuenta que los parámetros y valores deben estar urlencodificados.