PHP curl echo 未在浏览器中显示
PHP curl echo not displaying in browser
我试图在浏览器中显示来自 PHP POST 请求的响应字符串。如果我 运行:
<?php
$project_id = "abcdefgh";
$session_id = "123456789";
$url = "https://dialogflow.googleapis.com/v2/projects/".$project_id."/agent/sessions/".$session_id.":detectIntent";
$query = '{
"query_input": {
"text": {
"text": "Test input",
"language_code": "en-US"
}
}
}';
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $query);
//So that curl_exec returns the contents of the cURL; rather than echoing it
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
echo $result;
curl_close($ch);
?>
在 VSCode 中,我得到以下响应(这是预期的行为):
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
但是,如果我在 Chrome 中导航到我的 WAMP 服务器上的 index.php 文件 运行ning,我会看到一个空白屏幕。我可以回显其他字符串,例如:
我什至可以直接复制响应,并在浏览器中将响应作为字符串回显。它似乎不适用于 post 请求(也许这是一个时间问题?)。这可能是 WAMP configuration/permissions 问题,但我觉得问题可能出在其他地方。感谢您的帮助!
因为你的return是一个对象,你必须按照它的对象链访问它。无法执行 echo
对象,您必须检索消息属性和 return 字符串。
//execute post
$result = curl_exec($ch);
// Decode object ()
$result = json_decode($result);
// Message error
echo $result->error->message;
curl_close($ch);
参考:Object
我必须下载 cacert.pem 并将其添加到我的 php.ini 文件中,然后重新启动我的 WAMP 服务器才能使其正常工作。 curl 调用出错。
我试图在浏览器中显示来自 PHP POST 请求的响应字符串。如果我 运行:
<?php
$project_id = "abcdefgh";
$session_id = "123456789";
$url = "https://dialogflow.googleapis.com/v2/projects/".$project_id."/agent/sessions/".$session_id.":detectIntent";
$query = '{
"query_input": {
"text": {
"text": "Test input",
"language_code": "en-US"
}
}
}';
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $query);
//So that curl_exec returns the contents of the cURL; rather than echoing it
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
echo $result;
curl_close($ch);
?>
在 VSCode 中,我得到以下响应(这是预期的行为):
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
但是,如果我在 Chrome 中导航到我的 WAMP 服务器上的 index.php 文件 运行ning,我会看到一个空白屏幕。我可以回显其他字符串,例如:
我什至可以直接复制响应,并在浏览器中将响应作为字符串回显。它似乎不适用于 post 请求(也许这是一个时间问题?)。这可能是 WAMP configuration/permissions 问题,但我觉得问题可能出在其他地方。感谢您的帮助!
因为你的return是一个对象,你必须按照它的对象链访问它。无法执行 echo
对象,您必须检索消息属性和 return 字符串。
//execute post
$result = curl_exec($ch);
// Decode object ()
$result = json_decode($result);
// Message error
echo $result->error->message;
curl_close($ch);
参考:Object
我必须下载 cacert.pem 并将其添加到我的 php.ini 文件中,然后重新启动我的 WAMP 服务器才能使其正常工作。 curl 调用出错。