将 JavaScript Get 请求转换为 PHP Curl
Convert JavaScript Get Request to PHP Curl
我的 PHP Curl 代码没有返回错误或任何响应文本。 JavaScript 代码基于 returns 一个 Json 数组。
PHP 卷曲
header('Access-Control-Allow-Origin: ' . $_SERVER['SERVER_NAME']);
$subscriptionKey = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://southcentralus.tts.speech.microsoft.com/cognitiveservices/voices/list');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Ocp-Apim-Subscription-Key", $subscriptionKey));
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if($response === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors<br>';
echo "Response: $response";
}
$voices = json_decode($response);
curl_close($ch);
PHP 结果
工作 Javascript
var request = new XMLHttpRequest();
var subscriptionKey = '';
request.open('GET', 'https://southcentralus.tts.speech.microsoft.com/cognitiveservices/voices/list', true);
request.setRequestHeader("Ocp-Apim-Subscription-Key", subscriptionKey)
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
const response = this.response;
const data = JSON.parse(response);
console.log(data);
} else {
window.console.log(this);
}
};
request.send()
JavaScript 结果
我将 CURLOPT_HEADER
更改为 true(感谢 Lucas 的评论),现在出现 401 错误。这让我感到困惑,因为它与 URL 和订阅密钥完全相同。
CURLOPT_HTTPHEADER
的数组每个 header 取一个项目,而不是单独的键和值项目。所以在这种情况下,尝试:
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Ocp-Apim-Subscription-Key:
$subscriptionKey"));
我的 PHP Curl 代码没有返回错误或任何响应文本。 JavaScript 代码基于 returns 一个 Json 数组。
PHP 卷曲
header('Access-Control-Allow-Origin: ' . $_SERVER['SERVER_NAME']);
$subscriptionKey = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://southcentralus.tts.speech.microsoft.com/cognitiveservices/voices/list');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Ocp-Apim-Subscription-Key", $subscriptionKey));
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if($response === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors<br>';
echo "Response: $response";
}
$voices = json_decode($response);
curl_close($ch);
PHP 结果
工作 Javascript
var request = new XMLHttpRequest();
var subscriptionKey = '';
request.open('GET', 'https://southcentralus.tts.speech.microsoft.com/cognitiveservices/voices/list', true);
request.setRequestHeader("Ocp-Apim-Subscription-Key", subscriptionKey)
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
const response = this.response;
const data = JSON.parse(response);
console.log(data);
} else {
window.console.log(this);
}
};
request.send()
JavaScript 结果
我将 CURLOPT_HEADER
更改为 true(感谢 Lucas 的评论),现在出现 401 错误。这让我感到困惑,因为它与 URL 和订阅密钥完全相同。
CURLOPT_HTTPHEADER
的数组每个 header 取一个项目,而不是单独的键和值项目。所以在这种情况下,尝试:
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Ocp-Apim-Subscription-Key: $subscriptionKey"));