第二个cURL无法正常工作,目标是servlet并且无法正常工作

时间:2012-04-29 08:05:05

标签: php curl geocode

 <?php

在这部分中,我提供了一个纬度经度来反转地理编码。

 $ch = curl_init("http://maps.google.com/maps/api/geocode/json?latlng=39.784268,-98.393555&sensor=false");

 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
 $return = curl_exec($ch);
 curl_close($ch);
 $geoOutput = json_decode($return, true);

 $data = current($geoOutput);
 echo $data; 

之后,我想将内容传递给servlet,但出于示例目的,我嵌入了街道和邮政编码。 生成的url如下所示,但如果你运行url将不会发生curl中的任何事情。但如果你复制粘贴,浏览器中的代码就会成功。

  $urlse="http://136.145.116.30:8080/AccidentDetailsInserter?latitude=18.209&longitude=-67.139&frontal_damage=1&left_damage=1&right_damage=0&back_damage=0&smoke_detected=0&flipped=0&maxforce=7&roll=0&pitch=0&yaw=0&device_id=47&street=Calle Caobos&city= Mayagüez&state=PR&zip= 00680";

echo $urlse;

     $ch = curl_init();
      $timeout = 5;
      curl_setopt($ch,CURLOPT_URL,$urlse);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
      curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
      $data = curl_exec($ch);
      curl_close($ch);
      echo $data;

此处输出为空白

    ?>

我尝试写入将端口指定为8080但没有。

1 个答案:

答案 0 :(得分:0)

您的第二个网址包含应该进行urlencoded的空格和其他未转义字符。如果您将其粘贴到浏览器中,浏览器会为您修复该问题。 CURL没有。

而不是street=Calle Caobos或其他此类参数,您应发送street=Calle%20Caobos。只需对正在构建的所有参数使用urlencode()

编辑:这里缺少一些东西,这里有一些工作代码:

$urlse="http://136.145.116.30/AccidentDetailsInserter?latitude=18.209&longitude=-67.139&frontal_damage=1&left_damage=1&right_damage=0&back_damage=0&smoke_detected=0&flipped=0&maxforce=7&roll=0&pitch=1&yaw=0&device_id=47&street=CalleCaobos&city=SanJuan&state=PR&zip=00926";
echo $urlse;

     $ch = curl_init();
      $timeout = 10;
      curl_setopt($ch,CURLOPT_URL,$urlse);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
      curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
      curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
      curl_setopt($ch, CURLOPT_PORT, 8080);
      $data = curl_exec($ch);
      curl_close($ch);
      echo $data;