gpt4 book ai didi

guzzle - GuzzleHttp 中的多个重复 uri 参数

转载 作者:行者123 更新时间:2023-12-03 14:45:22 28 4
gpt4 key购买 nike

我正在访问 Echo Nest API,这要求我重复相同的 uri 参数名称 bucket .但是我无法在 Guzzle 6 中完成这项工作。I read a similar issue from 2012 ,但是该方法不起作用。

我尝试将其手动添加到查询字符串中,但没有成功。

示例 API 调用可以是:
http://developer.echonest.com/api/v4/song/search?format=json&results=10&api_key=someKey&artist=Silbermond&title=Ja&bucket=id:spotify&bucket=tracks&bucket=audio_summary
这是我的示例客户端:

/**
* @param array $urlParameters
* @return Client
*/
protected function getClient()
{
return new Client([
'base_uri' => 'http://developer.echonest.com/api/v4/',
'timeout' => 5.0,
'headers' => [
'Accept' => 'application/json',
],
'query' => [
'api_key' => 'someKey',
'format' => 'json',
'results' => '10',
'bucket' => 'id:spotify' // I need multiple bucket parameter values with the 'bucket'-name
]);
}

/**
* @param $artist
* @param $title
* @return stdClass|null
*/
public function searchForArtistAndTitle($artist, $title)
{
$response = $this->getClient()->get(
'song/search?' . $this->generateBucketUriString(),
[
'query' => array_merge($client->getConfig('query'), [
'artist' => $artist,
'title' => $title
])
]
);

// ...
}

你能帮助我吗?

最佳答案

Guzzle 6 你不能再传递任何聚合函数了。每当您将数组传递给 query 时配置它 will be serializedhttp_build_query功能:

if (isset($options['query'])) {
$value = $options['query'];
if (is_array($value)) {
$value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
}

为了避免它,您应该自己序列化查询字符串并将其作为字符串传递。
new Client([
'query' => $this->serializeWithDuplicates([
'bucket' => ['id:spotify', 'id:spotify2']
]) // serialize the way to get bucket=id:spotify&bucket=id:spotify2
...
$response = $this->getClient()->get(
...
'query' => $client->getConfig('query').$this->serializeWithDuplicates([
'artist' => $artist,
'title' => $title
])
...
);

否则你可以进入 handler选项调整后 HandlerStack 这将在其堆栈中包含您的中间件处理程序。将读取一些新的配置参数,例如 query_with_duplicates ,构建可接受的查询字符串和 modify相应地请求的 Uri。

关于guzzle - GuzzleHttp 中的多个重复 uri 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672146/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com