【问题标题】:Post a JSON object from PHP using cUrl使用 cUrl 从 PHP 发布 JSON 对象
【发布时间】:2016-08-10 05:20:14
【问题描述】:

我使用 php 功能创建了一个 JSON 对象json_encode

对象是这样表述的:

$object_array[]=array('value1' => $value1, 'value2' => $value2);

$json_output = json_encode($object_array, JSON_UNESCAPED_SLASHES);

我需要使用 PHP 的“cUrl”功能将$json_output 发布到 URL。

任何人都可以根据上面的代码提出一些建议吗?

【问题讨论】:

  • 你可以使用url_encode
  • 我需要将对象发布到另一台不使用 PHP 解码的服务器。是否可以使用某些东西来发送确切的对象?类似于 $.post("url", $json_output) 的东西?如何集成 php 和 jquery/ajax ?
  • 也许很有趣? JavaScript URL Decode function。看来 PHP 'rawurlencode' 可能有用?
  • @RyanVincent 但我的问题是在某种程度上我需要将 JSON 对象传递到另一台服务器上,而不是从我创建它的地方,所以在某种程度上我需要定义一个 URL

标签: php json post curl


【解决方案1】:

使用 curl 发布 json 对象。

$data = array('value1' => $value1, 'value2' => $value2);                                                                    
$data_string = json_encode($data);                                                                                   

$ch = curl_init('http://api.local/rest/users');   // where to post                                                                   
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   

$result = curl_exec($ch);

【讨论】:

  • 非常感谢您的回答,我在执行时收到以下错误:PHP Fatal error: Call to undefined function curl_init() 知道如何摆脱它吗?
  • @TonyBorcello 您需要安装 php curl 库。 sudo apt-get install php5-curl sudo service apache2 restart
【解决方案2】:

urlencode() 是以编码形式发布 URL 的最佳方法...

$json_output = json_encode($object_array, JSON_UNESCAPED_SLASHES);
$url = 'www.example.com?url='.urlencode($json_output);

你会在urldecode()的url参数之后得到你的数组...

$json = urldecode($_GET['url']);

【讨论】:

  • 我需要将对象发布到另一台不使用 PHP 解码的服务器。是否可以使用某些东西来发送确切的对象?类似于 $.post("url", $json_output) 的东西?如何集成 php 和 jquery/ajax ?
  • 那么您可以使用JSON.stringify(json_array)将对象转换为字符串,您可以轻松发送它并使用JSON.parse(jsonString);对其进行解码..
  • 但是如何将 PHP 对象传递给 jquery 呢?
  • 在你的脚本文件var json_array = <?php echo $json_output; ?>
猜你喜欢
  • 2011-12-19
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 2011-03-31
  • 2010-10-23
相关资源
最近更新 更多