2015-03-31 99 views
0

我想从共享主机调用一个API(mapquest)url。如何从PHP调用API url?

该网址工作正常,因为它显示了粘贴在浏览器中的预期JSON响应。

但是,我不能让它从一个PHP页面工作。 我试过curlfile_get_contents都没有成功。

我不断获取HTTP/1.1 400 Bad Request错误...

这里是我使用的代码,这是很基本的...

$ch=curl_init(); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE); 
    $result=curl_exec($ch); 
    if(!$result){ 
     exit ('cURL ERROR: '.curl_error($ch)); 
    } 
    return var_dump($result); 
+0

哎呀你没有设置头.. – 2015-03-31 10:21:11

+1

你发送所有必要的标题? – Daan 2015-03-31 10:21:15

回答

1

你好尝试这样

$query = urlencode('where={"steps":9243}'); 
$ch = curl_init('https://api.parse.com/1/classes/Steps?'.$query); 

curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-Parse-Application-Id: myApplicationID', 
    'X-Parse-REST-API-Key: myRestAPIKey', 
    'Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_exec($ch); 
curl_close($ch); 

有些事是指该链接

Querying API through Curl/PHP

0

我知道了!

该网址由JSON数据和空格组成。

URL的这部分必须用urlencode()编码,但不是完整的url。

它适用于curlfile_get_contents()

0

试试下面的代码

$ch = curl_init(); 
    $curlConfig = array(
     CURLOPT_URL   => "http://www.bing.com/", 
     CURLOPT_POST   => true, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_POSTFIELDS  => array(
      'field1' => 'some date', 
      'field2' => 'some other data', 
     ) 
    ); 
    curl_setopt_array($ch, $curlConfig); 
    echo $result = curl_exec($ch); 
    curl_close($ch);