cURL请求:服务器收到POST数据,但返回无效请求

时间:2014-10-23 05:47:50

标签: php curl

我正在尝试查询NOTAM数据库(https://www.notams.faa.gov),以便服务器解析NOTAM以在地图上显示,代码是PHP。

我使用cURL发送POST数据,但服务器正在返回"无效请求"。这是我发送到服务器的POST数据。它正是在主页请求期间发送的内容(使用Fiddler发现)。所需的NOTAM是" RKRR"国际民航组织(韩国仁川中心机场代码)。

我在这里缺少什么?

$url = "https://www.notams.faa.gov/dinsQueryWeb/queryRetrievalMapAction.do";
$ch = curl_init($url);

$header = array('Host: www.notams.faa.gov', 'Content-Type: application/x-www-form-urlencoded',      'Connection: keep-alive', 'Cache-Control: max-age=0', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/*;q=0.8', 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36', 'Referer: https://www.notams.faa.gov/dinsQueryWeb/', 'Accept-Encoding: gzip,deflate', 'Accept-Language: en-US,en;q=0.8', 'Origin: https://www.notams.faa.gov');

$data = 'retrieveLocId=rkrr&reportType=Raw&submit=View+NOTAMSs&actionType=notamRetriealByICAOs';
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


$response = curl_exec($ch);

echo $response;
curl_close($ch);

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您似乎在变量$data

中输入了拼写错误
  

$ data =' retrieveLocId = rkrr& reportType = Raw& submit = View + NOTAMSs& actionType = notamRetriealByICAOs';

实际上

  

$ data =' retrieveLocId = rkrr& reportType = Raw& actionType = notamRetrievalByICAOs& submit = View + NOTAMSs';

它不是notamRetriealByICAOs

notamRetrievalByICAOs

试一试