我们已经在Azure ML中创建并部署了一个模型,可以通过api访问该模型。由于我们希望在WordPress网站上显示api的输出,因此api调用应在php脚本中进行。我的php脚本正在运行,但是除了“数据”(我期望有JSON输出)外,它没有显示任何输出。我是否需要指定一个output.php文件,例如我的输出将发送到什么地方?
我们遵循了https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-consume-web-service上的文档,并且能够使用Python进行API调用。不幸的是,这在php中并不是那么容易,尤其是因为我完全没有php编程经验。我感觉API正在工作,因为给出了一些响应,但没有给出预期的结果。
我写了以下代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$url = 'http://<unique-api-address>.westeurope.azurecontainer.io/score';
//our model needs 21 input variables
$data_json = '{ "data:" :
[
[ 21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 ]
]
}';
//print_r($data_json);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',));
$output = curl_exec($ch);
if($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
curl_close($ch);
// $response = json_decode($output, true);
// $errors = $response['response']['errors'];
// $data = $response['response']['data'][0];
print_r($output);
?>
我希望输出是一个JSON文件,但是我的输出只是单词'data'
答案 0 :(得分:0)
看来您已经自己弄清楚了。
在这里,我只想向您展示另一个解决方案。由于php支持将字符串作为数组中的索引,并且字符串索引将由json_encode函数编码为键,因此以下代码也将起作用:
$post_data = array(
'data' => array(
array(21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1)
)
);
echo json_encode($post_data);
输出:
{"data":[[21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]]}