2008年02月09日

HTTP1.1勉強不足です。

この間公開した、HttpURLConnectionクラス使ってRESTタイプのWebサービスクライアントクラスを作成しているのですが、受け取ったXMLを見てみると、データ先頭・途中・末尾になにやら意味不明な文字を入っていて、XMLのパースが上手くいきません。

例えば↓


4aa

<?xml version="1.0" encoding="UTF-8" ?>
〜〜〜〜
<link>http://XX

5a8

XXXX.com/point/city/9999.html</link>
〜〜〜〜
</root>


0



というように"4aa"や"5a8"や"0"などが入ってきます。
一体これはなんだろうと思っていましたが、HTTPヘッダを
見直してみると、
Transfer-Encoding: chunked
になっています。もしかして、これがチャンクデータ?と思って、
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec3.6.1
を見てみると、確かにチャンクデータのようです。HTTP/1.1からの仕様ですね。

HttpURLConnectionクラスはHTTP/1.1を使用しているので、チャンクデータのデコード(連結)は、仕様的にやらなければならないようです。

全く勉強不足でした。対応しなければ・・・

ただ、仕様上はチャンクサイズの後ろはCRLFのようなのですが、実際受け取ったXMLデータでは、CRCRLFのように見えるのですよね。どういうことなのでしょう?


良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 09:46| Comment(0) | TrackBack(0) | 日記