安装方式: composer require alibabacloud/alimt 安装后include autoload.php 一运行就报错: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Type error: Argument 3 passed to GuzzleHttp\Client::request() must be of the type array, string given, called in vendor/guzzlehttp/guzzle/src/Client.php on line 89 in vendor/guzzlehttp/guzzle/src/Client.php:128
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明你在使用 Alibaba Cloud 的语言翻译 SDK (alimt) 时,通过 GuzzleHttp 客户端发送请求时传入的参数类型不正确。具体来说,GuzzleHttp\Client::request() 方法的第三个参数应该是一个数组,但你的代码中传递的是一个字符串。
为了解决这个问题,请检查你调用阿里云语言翻译 SDK 中相关方法时传递的参数。确保所有配置项和请求参数都是以数组的形式提供的。这里给出一个示例来说明如何正确构造请求参数:
require 'vendor/autoload.php';
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
// 初始化客户端
AlibabaCloud::accessKeyClient('<your-access-key-id>', '<your-access-key-secret>')
->regionId('cn-hangzhou') // 根据实际需要设置区域
->asDefaultClient();
try {
// 构造请求参数(注意:这里的$options应该是一个数组)
$options = [
'SourceLanguage' => 'en',
'TargetLanguage' => 'zh',
'Text' => 'Hello, world!',
];
// 调用翻译服务
$result = AlibabaCloud::rpc()
->product('alimt')
->version('2018-10-16')
->action('Translate')
->method('POST')
->options($options) // 确保这是一系列选项的数组
->request();
echo $result->get('Data')['Translated'];
} catch (ClientException $e) {
echo "Error: ", $e->getMessage(), "\n";
} catch (ServerException $e) {
echo "Error: ", $e->getMessage(), "\n";
}
请根据你的实际情况替换 <your-access-key-id> 和 <your-access-key-secret> 以及可能的其他参数。上述代码展示了如何正确地构造并传递请求参数给阿里云SDK,避免了原始问题中的类型错误。