デコードする方法がわからず途方にくれています。
例では2ch.netを挙げています。
サイトによっては強制的にgzipで送信してくる所もあるので
ヘッダに「Accept-Encoding: none」を指定する手が使えないこともありました。
テストコードではgzip圧縮されたメッセージボディ部の取得ができます。
よろしくお願いします。
//http://hsp.tv/play/pforum.php?mode=pastwch&num=23799より改造しました #include "hspinet.as" #include "hspsock.as" screen 0, 600,800 sdim hLog,1024000 pos 0,0 mesbox hLog,600,800,0 hLogId=stat //初期化 netinit:if stat!=0:dialog "err.":end //接続 sockopen 0,"2ch.net",80 //エラー時 if stat : dialog "sock err. ["+stat+"]":end //ヘッダ header="GET http://2ch.net/ HTTP/1.1\n" header+="Host: 2ch.net\n" header+="Cache-Control: max-age=0\n" //gzipを許可 header+="Accept-Encoding: gzip,deflate\n\n" hLog+=header:objprm hLogId,hLog;mesbox更新 //ヘッダを投げる sockput header if stat!=0:dialog "send err. ["+stat+"]":end buf="":a="" b=0:sz=0 *wloop await 0 sockget a,64 if stat : dialog "socket error" : end b=peek(a,0):if b=0 : goto *sdok buf+=a sz+=64 if sz>30000 : dialog "受信サイズがオーバーしました。" : goto *sdok goto *wloop *sdok hLog+=buf+"\n\n":objprm hLogId,hLog;mesbox更新 //行ごとに分解 split buf,"\n",httpDat //空行の次がメッセージボディ位置 empLineNum=0 repeat length(httpDat) if httpDat.cnt="":empLineNum=cnt:break loop httpMessageBody=httpDat.(empLineNum+1) hLog+="httpMessageBody\n"+httpMessageBody+"\n\n":objprm hLogId,hLog;mesbox更新 //おわり stop