我正在使用Guzzle将请求发送到外部API端点。
在我的请求中,有一个文本查询值 - ' https://api_endpoint/' 。 '文本=' 。$文本
当我逐个发送请求时:
$response = $client->request(
'GET',
''https://api_endpoint/' . '?text=' .$text,
);
它适用于文本字段中的任何语言。但是,当我第一次迭代另一个查询值并创建一个请求数组,然后使用Pool发送这些请求时:
$responses = Pool::batch($client, $requests, array(
'concurrency' => 15,
));
在这种情况下,如果请求中的文本字段是用西里尔语编写的,那么我从API端点收到“错误请求”。但是,如果文本字段是拉丁字符,则一切正常。我一个接一个地发送请求的情况也一样。
我认为使用Guzzle Pool时编码存在问题。
如何修复或解决此问题?
答案 0 :(得分:1)
这不是Guzzle的问题。在连接之前,您必须urlencode $text
。 urlencode($text)
或使用Guzzle的query
选项:
$response = $client->request(
'GET',
'https://api_endpoint/',
['query' => ['text' => $text]],
);