HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0731
まりんsockgetbを使ったHTTP通信で画像を取得できない1未解決


まりん

リンク

2009/7/31(Fri) 15:48:48|NO.26631

次のように、sockgetbを使ったHTTP通信で画像を取得しようとしています。
ですが、受信するバイナリデータが途中で途切れてしまっているようです。
また、それをbsaveしても、おかしなデータが保存されてしまいます。
以下のスクリプトでは、何が間違っているのでしょうか?

#include "hspsock.as" sdim buf, 100000 sdim tpbuf,100000 sockopen 0, "upload.wikimedia.org", 80 if stat !=0 {dialog"sockopen失敗":goto *exit} sockput "GET http://upload.wikimedia.org/wikipedia/commons/a/ac/Lillyacp.jpg HTTP/1.0\nHost:upload.wikimedia.org\nUser-Agent: HSP\n\n" if stat !=0 {dialog"sockput失敗":goto *exit} repeat 1000 sockgetb tpbuf, 0,100000,0 size=stat totalsize+=stat if size = 0 {break} buf+=tpbuf dump = "" for i,0,100 if i>0 and i\16=0 {dump+="\n"} dump += strf("%02X ", peek(tpbuf,i)): next color 255,255,255:pos 0,0:boxf:color:mes "■今回受信サイズ" + size + "\n\n■合計受信サイズ" + totalsize + "\n\n■今回受信内容\n\n" + tpbuf + "\n\n■100バイトdump\n\n" + dump await 1 loop // dialog buf // bsave "c:\\headAndImage.bin",buf,totalsize *exit sockclose 0 end



この記事に返信する


inovia

リンク

2009/7/31(Fri) 17:38:17|NO.26632

こんなのでよろし?


#include "hspsock.as" sdim buf,4096 sockopen 0, "upload.wikimedia.org", 80 if stat !=0 {dialog"sockopen失敗":goto *exit} //HEADリクエスト送信 sockput "HEAD /wikipedia/commons/a/ac/Lillyacp.jpg HTTP/1.0\nHost: upload.wikimedia.org\n\n" if stat !=0 {dialog"sockput失敗":goto *exit} //レスポンスからファイルサイズを割り出す。 sockget buf,4096,0 s=instr(buf,0,"Content-Length: ") e=instr(buf,s,"\n") filesize=int(strmid(buf,s+16,e-16)) sockclose 0 sockopen 0, "upload.wikimedia.org", 80 //GETリクエスト送信 sockput "GET /wikipedia/commons/a/ac/Lillyacp.jpg HTTP/1.0\nHost: upload.wikimedia.org\n\n" if stat !=0 {dialog"sockput失敗":goto *exit} sdim buf,filesize+4096 revsize=0 repeat sockcheck 0 if stat=1:wait 5:continue if stat=2:dialog"ソケットエラー":goto *exit sockgetb buf,revsize,1024,0 if stat=0:break revsize+=stat if cnt\10=0:wait 5:title ""+revsize loop //レスポンスヘッダーとバイナリデータを分離 idx=instr(buf,0,"\n\n") sdim buf2,filesize memcpy buf2,buf,filesize,0,idx+4 bsave "test.jpg",buf2 *exit sockclose 0 end



ONION software Copyright 1997-2021(c) All rights reserved.