2012年1月25日 星期三

台電電費查詢 via JAVA

這本來不是件直的拿來記錄的簡單事情

但沒想到以為1小時搞定的東西硬是搞了2天,過程糾結點整理如下

1.show資料的頁面全是get而沒有post,讓笨笨的我困惑了,以往都是post看裡面有哪些data照傳就可以取得資料,這次卻沒post而全部是get,找來找去原來是很迅速的post資料後馬上跳頁,所以用firebug不易攔到,最後再對應你的cookie來做get識別

2.回應標頭檔很機車,長這樣
HTTP/1.1 200 OK
Cache-Control: private
Date: Wed, 25 Jan 2012 12:30:11 GMT
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Encoding: gzip
Vary: Accept-Encoding
Transfer-Encoding: chunked

看到了嘛....他沒有datalength。不過其實也無所謂照讀下面的資料不就好了,但問題就卡在這行Transfer-Encoding: chunked,你用inputstream不管資料怎麼讀怎麼錯,原因是chunked是1.1其中一種獨特的網頁傳輸編碼方式,解決方法也很吐血把HTTP改成1.0搞定........按,在這裡卡超久

3.最後則是雖然要讀的內容有中文可是
BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8")); 文字會亂碼
BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream())); 文字ok
這裡覺得很奇怪,也用了一下

寫下來記錄這次奇幻的經驗orz

沒有留言: