我在同一台服务器上有两个站点:
api.mysite.com john.mysite.com
在我的API网站上,我有一个接受POSTed json数组的服务。在我的john.mysite.com网站上,我调用该服务并使用以下方式发布:
$info['id'] ="oo_".uniqid();
$info['version'] ="5";
$url = "http://api.mysite.com/services/addclient";
$posted_fields = json_encode($info);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
echo $result;
当这个被调用时,我没有收到任何发布到网络服务的内容。我已经进入该代码并抛出$ _POST并且它是空的。为什么curl不通过POST发送数据?
感谢您的帮助!
答案 0 :(得分:4)
一个问题是您json_encode
数据而不是表单编码。
另一个原因是$info
可能未初始化。
另一个是你在第9行错误地$postfields
。
尝试:
$info['id'] ="oo_".uniqid();
$info['version'] ="5";
$url = "http://api.mysite.com/services/addclient";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($info));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
echo $result;
答案 1 :(得分:1)
第9行的错误
$postfields
应该是
$posted_fields