老師說的那個參數有問題是不是老師理解有誤啊......
老師所說的location_select是一個自定義菜單事件推送(準確的說是彈出地理位置選擇器的事件推送)
而老師去debug時并不是通過點擊自定義菜單去發送位置消息,應該是通過聊天框最右邊的“+”號里的“位置”去發送的位置消息
而這樣的話,微信服務器返回的就是一個普通的地理位置消息的xml數據,并不是自定義菜單事件推送里的,彈出地理位置選擇器的事件的xml數據,而老師在視頻里是用這兩個不同的事件去做對比的,這兩個事件所返回的xml數據包是不同的,所以老師是不是誤會了?
然后我自己通過在下面這個方法中的一個輸出語句去遍歷map中的值,就是那個循環里的輸出語句,(因為我不會debug....)
public?static?Map<String,String>?xmlToMap(HttpServletRequest?request) ????????throws?IOException,?DocumentException?{ ????Map<String,String>?map?=?new?HashMap<String,?String>(); ????SAXReader?reader?=?new?SAXReader(); ????InputStream?ins?=?request.getInputStream(); ????Document?doc?=?reader.read(ins); ????Element?root?=?doc.getRootElement(); ????List<Element>?list?=?root.elements(); ????for?(Element?e:list)?{ ????????map.put(e.getName(),e.getText()); ????????System.out.println(e.getName()+"-->"+e.getText()); ????} ????ins.close(); ????return?map; }
我是通過點擊我自己創建的自定義菜單中的地理位置選擇器去發送位置的,不是老師那樣,然后得到了下面這段輸出,下面的那一段就是普通的位置消息的數據,與開發文檔中的都可以對得上,而上面這一段與自定義菜單的位置事件消息的數據,能對得上前面幾個,而后邊的幾個就是沒有了,我就一臉懵逼了....
請大佬們指出哪里有問題,還是說我理解得不對,都請指出,不勝感激?。▉碜砸粋€很白很白的小白..)
2019-07-05
我的按照老師的寫的,兩種方式都可以,但是在調試的時候一開始是不可以的,和樓主的問題一樣,也是先改為了location_select,但是拿不到這個集合里沒有Lable的值,我又改回location后,不用debug可以成功,不知道為啥。
2019-03-31
[ INFO ] - [ servlet.WeixinServlet.doPost(WeixinServlet.java:55) ] {Location_X=40.067593, CreateTime=1554020443, Location_Y=116.327114, Label=北京市北京回龍觀萬龍社區(萬龍社區16號), Scale=15, ToUserName=gh_3aaa50434c4f, FromUserName=oeA6ZuEqWJ65v1_PYcxpyfcIi3NQ, MsgType=location, MsgId=22248223037388133}
[ INFO ] - [ servlet.WeixinServlet.doPost(WeixinServlet.java:55) ] {CreateTime=1554020443, EventKey=13, SendLocationInfo=, Event=location_select, ToUserName=gh_3aaa50434c4f, FromUserName=oeA6ZuEqWJ65v1_PYcxpyfcIi3NQ, MsgType=event}
同時收到的兩個動作,第一個是接收的普通位置信息,第二個才是點擊地理位置選擇器的事件(參數對不上)
2019-03-31
location_select:彈出地理位置選擇器的事件推送的參數的確是有問題的。
老師的講解也是有問題的,點擊地理位置選擇器并發送位置是兩個動作同時回傳服務器的(點擊位置的事件參數的確是和文檔對不上的;位置消息沒有問題),老師將位置信息參數當成了位置事件的參數
2018-12-17