php专区

 首页 > php专区 > PHP应用 > 开放平台 > 方倍微信公众平台开发(94) 违章查询 - 微信公众平

方倍微信公众平台开发(94) 违章查询 - 微信公众平

分享到:
【字体:
导读:
          在微信公众平台开发违章查询是一件比较辛苦的事,因为违章查询的数据在各省市公安部门的服务器上,对外只有网页查询提供,所以只有去分析网页,然后通过模拟提交来实现。黑龙...

 

在微信公众平台开发违章查询是一件比较辛苦的事,因为违章查询的数据在各省市公安部门的服务器上,对外只有网页查询提供,所以只有去分析网页,然后通过模拟提交来实现。

黑龙江违章查询地址为 http://www.hljjj.gov.cn:8081/Home/Wfcx

实际查询时,抓取到的请求如下

通过查看网页源码得到验证:

 1 

可以看到,实际查询路径为 /Home/getWfcx,也就是说,真实的查询地址为

http://www.hljjj.gov.cn:8081/Home/getWfcx

查询请求为 

hpzl=02&dy=黑&xzqh=A&hphm=EZ352&clsbdh=LGBF1DE099R156742&jkbj=0&ts=1396242672751

返回的内容如下:

号牌号码号牌种类违法时间金额记分缴款状态处理状态违法地点违法内容决定书编号采集机关
黑AEZ352小型汽车2013-12-30 15:14:001003未缴款未处理国道绥满公路578公里驾驶中型以上载客载货汽车、危险物品运输车辆以外的其他机动车行驶超过规定时速未达20%的黑龙江省绥化市肇东市交警大队
黑AEZ352小型汽车2013-7-16 14:37:001000未缴款未处理比优特旗舰店不按规定停车黑龙江省鹤岗处罚大队
黑AEZ352小型汽车2013-7-15 18:42:001000未缴款未处理比优特旗舰店不按规定停车黑龙江省鹤岗处罚大队
黑AEZ352小型汽车2013-6-26 9:41:001000未缴款未处理防疫站不按规定停车黑龙江省鹤岗处罚大队
黑AEZ352小型汽车2013-6-17 12:40:001003未缴款未处理哈尔滨市-铁路街全路段违反禁止标线指示巡逻大队
黑AEZ352小型汽车2013-6-7 10:44:001000未缴款未处理市农行道口不按规定停车黑龙江省鹤岗处罚大队
黑AEZ352小型汽车2013-5-26 18:37:001000未缴款未处理老交通局不按规定停车黑龙江省鹤岗处罚大队
黑AEZ352小型汽车2013-5-14 9:13:001000未缴款未处理老交通局不按规定停车黑龙江省鹤岗处罚大队

其返回的结果不是一个标准的json,而是一个网页格式,所以还需要html解析处理,

而对于请求发送,直接构造字符串用curl进行POST提交

实现代码如下:

 1 function getTrafficInfo($longnumber)
 2 {
 3     if (!preg_match("/^违章#黑[A-Ra-r]w{5}#w{17}$/",$longnumber)){        //城市简拼
 4         return "查询格式错误!n请发送'违章#车牌号码#机动车识别代号'n例如'违章#黑AEZ352#LGBF1DE099R156742'";
 5     }
 6     
 7     $headers = array(
 8         "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1",
 9         "Accept: application/json, text/javascript, */*",
10         "Accept-Language: en-US,en;q=0.8",
11         "Referer: http://www.hljjj.gov.cn:8081/Home/Wfcx",
12         "X-Requested-With: XMLHttpRequest",
13         "Content-Type: application/x-www-form-urlencoded",
14     );
15 
16     $numberarray = explode ("#", $longnumber);
17     $provinceCode = substr($numberarray[1], 0, 3);
18     $cityCode = substr($numberarray[1], 3, 1);
19     $plateNumber = substr($numberarray[1], 4, strlen($numberarray[1]) - 4);
20     $vehicleNumber = $numberarray[2];
21     $curTime = explode (" ", microtime());
22     $curMicroTime = round($curTime[1].($curTime[0]*1000));
23 
24     $post2 = "hpzl=02&dy=黑&xzqh=$cityCode&hphm=$plateNumber&clsbdh=$vehicleNumber&jkbj=0&ts=$curMicroTime";
25     
26     $ch = curl_init();
27     curl_setopt($ch, CURLOPT_URL, "http://www.hljjj.gov.cn:8081/Home/getWfcx");
28     curl_setopt($ch, CURLOPT_HEADER, false);
29     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
30     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
31     curl_setopt($ch, CURLOPT_POSTFIELDS, $post2);
32     $content=curl_exec($ch);
33     curl_close($ch);
34     $output = json_decode($content, true);
35 
36     if($output[0] != "0"){
37         return "【错误】类型:".$output[0].", 原因:".$output[1];
38     }else{
39         $str = $output[2];
40         include('simple_html_dom.php');
41         $html = str_get_html($str);
42         $result = "";
43         $titleArray = array("号码", "种类", "时间", "金额", "记分", "缴款", "处理", "地点", "内容", "编号", "机关");
44         foreach($html->find('table tr') as $tr){
45             if ($tr->find('td', 0)->innertext == "号牌号码"){
46                 continue;
47             }
48             for ($i = 2; $i <= 10; $i++) {
49                 $result .= $titleArray[$i].":".$tr->find('td', $i)->innertext."n";
50             }
51             $result .= "n";
52             if (strlen($result) > 2000){break;}
53         }
54         return trim($result);
55     }
56 }

 

 

 


分享到:
方倍微信公众平台开发(88) 用户分组接口 ...
本文介绍在微信公众平台上如何使用高级接口开发用户分组接口的功能。   一、接口介绍 开发者可以使用接口,对公众平台的分组进行查询、创建、修改操作,也可以使用接口在需要时移动用户到某个分组。 一个公众账号,最多支持创建500个分组。 接口调用请求说明创建分组 http请求方式: POST(请使用https协议) ...
方倍微信公众平台开发(69)百度地图导航...
一、获取目的地坐标 打开百度地图API 鼠标点击拾取坐标网页,http://developer.baidu.com/map/jsdemo/demo/a6_3.htm,通过先缩小再放大,定位到拾取坐标的建筑物。 以深圳市飞亚达科技大厦为例,定位如下: 鼠标点击大厦名称,获得坐标: 113.962182, 22.544976 这分别表示经度和纬度。   二、百度地图公...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……