使用php调用oneMap Rest API

时间:2013-02-03 13:31:25

标签: php rest curl get

我想使用php从以下网址使用restful web服务。

http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr&searchVal=City Hall&otptFlds=SEARCHVAL,CATEGORY&returnGeom=0&rset=1 

我尝试使用cURL

<?php
$url='http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr&searchVal=City Hall&otptFlds=SEARCHVAL,CATEGORY&returnGeom=1&rset=1'; //rss link for the twitter timeline
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$resp = curl_exec($curl);
echo($resp);
curl_close($curl);

?>

当我运行此代码时,它不会显示任何内容。

我错过了什么吗?顺便说一下,这是我第一次尝试这样做。

*编辑添加的echo($ resp);但仍然无法运作

2 个答案:

答案 0 :(得分:1)

好像你没有按照它的意图消费API。 当我执行以下代码时

<?php
$url='http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr&searchVal=City Hall&otptFlds=SEARCHVAL,CATEGORY&returnGeom=1&rset=1'; //rss link for the twitter timeline
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$resp = curl_exec($curl);
var_dump(curl_error($curl));
curl_close($curl);
var_dump($resp);
?>

我得到了

string(23) "Empty reply from server" 
bool(false)

这让我相信您需要改变调用API的方式。就像注册一个令牌一样。

请按照http://www.onemap.sg/API/Help/ =&gt;中提供的步骤操作OneMap REST API =&gt;得到TOken 他们解释了如何申请令牌

答案 1 :(得分:0)

看看http://php.net/manual/en/function.curl-exec.php它表明curl_exec将返回true或false,如果设置了CURLOPT_RETURNTRANSFER则返回结果。你可以使用:

来回应它
echo($resp);

--- --- EDIT

仔细观察问题的是URL中的空格和逗号。编码后,它可以正常工作。

以下是工作网址

http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr&searchVal=City%20Hall&otptFlds=SEARCHVAL%2cCATEGORY&returnGeom=1&rset=1