如何在php中使用curl获取数据?

时间:2015-07-27 18:29:21

标签: php rest curl elasticsearch

我正在尝试为此curl请求创建一个PHP api

 curl 'http://xx.74.229.xxx:9200/snapdeal_electronics_mobiles_cat/_search' -d '{  "query": {  "match" : { "brand" : "Samsung" } } }' 

在终端中执行此操作时,我得到了响应,但是当我尝试在PHP脚本中直接使用它时,它无法正常工作

   <?php
function httpGet($url)
{
   $ch = curl_init();

   curl_setopt($ch,CURLOPT_URL,$url);
   curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//  curl_setopt($ch,CURLOPT_HEADER, false);

   $output=curl_exec($ch);

   curl_close($ch);
   return $output;
}

echo httpGet("http://xx.74.229.189:9200/snapdeal_electronics_mobiles_cat/_search' -d '{  "query": {  "match" : { "brand" : "Samsung" } } }");
?>

请提出一些解决方案,这是一个获取请求

1 个答案:

答案 0 :(得分:2)

您正在错误地创建卷曲请求,它也是您尝试不是GET的POST请求,因为您包含一个带有&#34; -d&#34;的POST主体。开关。

您需要从POST正文中分离URL并传递2个参数,一个用于POST数据,一个用于POST数据,如下所示:

<?php
function httpGet($url, $data)
{
   $ch = curl_init();

   curl_setopt($ch,CURLOPT_URL,$url);
   curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//  curl_setopt($ch,CURLOPT_HEADER, false);

   curl_setopt($ch,CURLOPT_POSTFIELDS, $data); //POST data

   $output=curl_exec($ch);

   curl_close($ch);
   return $output;
}

echo httpGet("http://xx.74.229.189:9200/snapdeal_electronics_mobiles_cat/_search",'{  "query": {  "match" : { "brand" : "Samsung" } } }');
?>