-1
 <?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 但没有。

4

1 回答 1

0

您的第二个 URL 包含应进行 urlencoded 的空格和其他未转义字符。如果您将其粘贴到浏览器中,浏览器会为您修复它。卷曲没有。

而不是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;
于 2012-04-29T08:42:38.480 回答