提问人:Deepa MG 提问时间:8/17/2017 更新时间:8/18/2017 访问量:134
如何将参数发送到另一个PHP网站的AJAX POST方法并获取JSON信息
How to send parameters to AJAX POST method of another PHP website and fetch JSON information
问:
我正在研究“如何解析其他网站的内容”。我正在使用 HTML DOM 解析来获取信息。我面临的问题是包含AJAX POST调用以获取信息的网站。示例网站: Massachussets
1.这里医生信息是使用ajax post方法获取的
Request URL:http://www.massgeneral.org/assets/javascripts/facets/doctors/doctors.ashx
Request Method:POST
如何在此处将参数传递给 post 方法?我尝试的是
<?php
echo '<center><h3>Massachusetts Information</h3></center>';
// extra headers
//$headers[]= "Accept-Encoding: gzip, deflate";
$fields['center'] = "";
$fields['centerPreSelected'] = false;
//$fields['displayPaging'] = false;
$fields['gender'] = "";
$fields['isEmpty'] = true;
$fields['languages'] = [];
$fields['letter'] = "A";
$fields['letter'] = "";
$fields['locations'] = array();
$fields['numberOfPages'] = 15;
$fields['numberPerPage'] = 50;
$fields['page'] = 1;
$fields['program'] = "";
$fields['range'] = array('Item1' => 0,'Item2' => 49);
$fields['saytLimit'] = "20";
$fields['term'] = "";
$POSTFIELDS = http_build_query($fields);
$headers[] = "Accept: application/json, text/plain, */*";
$headers[] = "Accept-Encoding: gzip, deflate";
$headers[] = "Accept-Language: en-GB,en;q=0.5";
$headers[] = "Connection: keep-alive";
$headers[] = "Content-Type: application/json";
$headers[] = "Host: www.massgeneral.org";
$headers[]="Referer: http://www.massgeneral.org/doctors/";
$login_submit_url = "http://www.massgeneral.org/assets/javascripts/facets/doctors/doctors.ashx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_URL, $login_submit_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
$result = curl_exec($ch);
echo $result;
它没有获取医生的信息。 请提供链接或想法来解析它。
答:
0赞
pguardiario
8/18/2017
#1
您正在使用 它创建“foo=1&bar=2”样式格式。该网站需要 json,因此您想改用。http_build_query()
json_encode()
此外,除非您确定真的要处理 gzip 响应,否则请省略 gzip 标头。
评论
0赞
Deepa MG
8/18/2017
当我替换它时,返回如下输出: $ؐ@ iG#) * eVe]f@ 흼 { { ;N' ?\fdl J ɞ! ?...................您能否建议我在代码中进行更改所需的所有位置?http_build_query()
json_encode()
I�%&/m�{J�J��t��
1赞
pguardiario
8/19/2017
取出 gzip 标头。它正在向你发送一个 gzip 压缩的响应,因为这就是你所要求的。
评论
DOMDocument