如何从php调用API网址?

时间:2015-03-31 10:15:40

标签: php curl

我试图从共享主机调用API(mapquest)网址。

网址正常,因为它会在浏览器中显示预期的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);

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我明白了!

网址由带空格的JSON数据组成。

网址的这一部分必须使用urlencode()进行编码,但不能使用完整的网址进行编码。

它适用于curlfile_get_contents()

答案 2 :(得分: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);