0

我想使用 php 从以下 url 使用一个安静的 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);

?>

不知何故,当我运行此代码时,它没有显示任何内容。

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

*编辑添加回声($resp);但仍然不起作用

4

2 回答 2

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/提供的步骤 => OneMap REST APIs => 获取令牌 他们解释了如何请求令牌

于 2013-02-03T14:01:52.083 回答
0

看看http://php.net/manual/en/function.curl-exec.php它声明 curl_exec 将返回 true 或 false 或者如果设置了 CURLOPT_RETURNTRANSFER 则返回结果。您可以使用以下命令对其进行回显:

echo($resp);

- -编辑 - -

仔细观察,问题是 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
于 2013-02-03T13:36:26.240 回答