繁体   English   中英

带有api的API发布请求以确保已部署模型

[英]API post request with php to azure deployed model

我们已经在Azure ML中创建并部署了一个模型,可以通过api访问该模型。 由于我们希望在WordPress网站上显示api的输出,因此api调用应在php脚本中进行。 我的php脚本正在运行,但是除了“数据”(我期望有JSON输出)外,它没有显示任何输出。 我是否需要指定一个output.php文件,例如我的输出将发送到什么地方?

我们遵循了https://docs.microsoft.com/zh-cn/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'

看来您已经自己弄清楚了。

在这里,我只想向您展示另一个解决方案。 由于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]]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM