Служба имеет ограничение на длину этого конкретного аргумента; оно не может превышать 512 символов и должно быть закодировано по URL.
Хотя я могу установить максимальную длину для текстового поля равным 512, это все равно приведет к тому, что аргумент запроса при кодировании превысит максимальное значение. длину, поскольку любой пробел будет закодирован как %20 и так далее.
В настоящее время я делаю следующее:
Код: Выделить всё
// 512 character long search text given by user.
$dummySearchString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tincidunt, nunc a consequat luctus, eros leo interdum nisl, vel convallis felis sapien eu nisl. Fusce ut viverra libero. Mauris non nulla sed elit varius volutpat. Sed in malesuada lacus. Nullam vel odio sagittis, ullamcorper mauris vel, scelerisque odio. Aliquam erat volutpat. Sed ut facilisis sapien, a rutrum sapien. Proin nec urna at ante egestas luctus sed in eros. Fusce accumsan odio sed ornare posuere. Ut consectetur arcu sed bibendum pretium. Integer tristique orci eget velit dictum, eu tristique justo aliquet. Praesent finibus egestas enim, vulputate varius tortor consequat id.';
// Encode the string, we first trim of any blank spaces from start and end.
$encodedQueryString = rawurlencode(trim($dummySearchString));
// Check the length and trim if exceeding 512 characters.
$encodedQueryString = substr($encodedString, 0, 512);
// Make http request.
$response = $this->client->request('GET', 'https://example.com/api/v1/search', [
'query' => [
'q' => rawurldecode($encodedQueryString),
],
]);
Что будет лучшее решение, чтобы убедиться, что текст, введенный в текстовую область, можно будет использовать в качестве аргумента запроса в этом случае?
Подробнее здесь: https://stackoverflow.com/questions/788 ... mum-length
Мобильная версия