php - IBM Watson Text To Speech PHP API 问题:无法解码 JSON 对象
问题描述
我当前的 PHP 代码似乎不适用于 IBM Watson Text To Speech。
以下代码返回以下输出:
{
"code_description": "Bad Request",
"code": 400,
"error": "No JSON object could be decoded"
}"
我一直在添加和删除几个 cURL 选项,以使其正常工作,但它仍然返回上述错误。
<?php
$data="Hello World";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL,"https://stream.watsonplatform.net/text-to-speech/api/v1/synthesize");
curl_setopt($ch, CURLOPT_USERPWD, "$USERNAME:$password");
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
"Content-Type: application/json",
"Accept: audio/webm"
)
);
$server_output = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$info = curl_getinfo($ch);
curl_close ($ch);
我应该添加/删除哪个标题以使其正常工作?
解决方案
@blade19899
改变这一行:
从:
curl_setopt($ch, CURLOPT_USERPWD, "$USERNAME:$password");
至: curl_setopt($ch, CURLOPT_USERPWD, base64_encode("$USERNAME:$password"));
出于安全原因,授权标头中应使用 base64 字符串。希望这对您有所帮助。
推荐阅读
- python - 无法修改python中的numpy数组
- neo4j - 在 Neo4J 的 Jaccard 相似性查询中添加 CASE WHEN 条件
- dart - 如何在角度飞镖项目中设置路线上的活动导航链接?
- sql - 检查坐标是否在范围内 - BigQuery GIS
- javascript - 如何在 CF 模板中始终将 AWS::Lambda::Version 更新为 $LATEST
- php - 我怎样才能json_encode长的html?
- c# - 后台工作人员 RunWorkerCompleted 为时已晚
- r - 交替组合两个向量
- git - GIT:在单声道回购中获取特定路径的提交
- postcss - 如何让 postcss-nesting 和 @vue/cli pwa 工作?