设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4637|回复: 24
打印 上一主题 下一主题

[已经解决] 如何用Get_Http_Info读取的数据....

[复制链接]

Lv2.观梦者

梦石
0
星屑
747
在线时间
799 小时
注册时间
2011-10-20
帖子
2394

开拓者

跳转到指定楼层
发表于 2013-8-2 19:50:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 end55rpg 于 2013-8-2 20:29 编辑

求保存为文件并能正确查看(如png图片)的办法
试了好一会儿,估计俺不行了。。。
怎么保存这些下载的 为PNG0.0
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2007-1-6
帖子
50
24
发表于 2013-8-3 19:27:41 | 只看该作者
建议 LZ 去找一下 VB 的文件下载代码,在 VB 中用 API 的部分会比较多。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
747
在线时间
799 小时
注册时间
2011-10-20
帖子
2394

开拓者

23
 楼主| 发表于 2013-8-3 16:53:29 | 只看该作者
本帖最后由 end55rpg 于 2013-8-3 17:03 编辑

- -请删啊111111111
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
747
在线时间
799 小时
注册时间
2011-10-20
帖子
2394

开拓者

22
 楼主| 发表于 2013-8-3 16:17:43 | 只看该作者
本帖最后由 end55rpg 于 2013-8-3 17:05 编辑
orzfly 发表于 2013-8-3 16:08
17 楼脚本,第 36 行应该改成原因是因为你在尝试加载二进制数据,所以数据中会存在 0 字符。
于是不能简单 ...
额,触。。。。
解决了
汗,原来俺用mashl啥玩意儿的不行- -好咯。。。。。
3Q~~~~~~~~~~~~~~~

欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
61055
在线时间
1933 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

21
发表于 2013-8-3 16:08:09 | 只看该作者
本帖最后由 orzfly 于 2013-8-3 16:12 编辑

17 楼脚本,第 36 行
  1. buf.delete!("\0")
复制代码
应该改成
  1. buf = buf[0, red.unpack('L')[0]]
复制代码
原因是因为你在尝试加载二进制数据,所以数据中会存在 0 字符。
于是不能简单的用 delete("\0") 来去掉字符串中的空值。

与此同时同样值得注意的是,这个 buf 并不应当作为 C 字符串(C-style zero-terminated string)来处理——去掉 \0 及以后的所有字符。
这只是一个任何数据都可能存放的 buffer。
InternetReadFile 的返回值已经充分返回了 buffer 中有效数据的长度。

如果阁下使用的是 Ruby 1.9+(RGSS3),这个脚本需要做一些编码方面的修改。主要是 force_encoding("ascii-8bit")。

@亿万星辰 @Sion @feizhaodan @satgo1546

顺便感谢 @晴兰 。此回复有TA的贡献。  

评分

参与人数 2星屑 +190 收起 理由
弗雷德 + 140 我很赞同
satgo1546 + 50 塞糖

查看全部评分

我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
747
在线时间
799 小时
注册时间
2011-10-20
帖子
2394

开拓者

20
 楼主| 发表于 2013-8-3 12:49:04 手机端发表。 | 只看该作者
satgo1546 发表于 2013-8-3 12:43
我也不会

我反正对网络一窍不通你能拿我怎么样= =

好吧
俺低估你了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
605
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
19
发表于 2013-8-3 12:43:59 | 只看该作者
我也不会

我反正对网络一窍不通你能拿我怎么样= =
然后我对编码不了解大概是编码?(……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

18
发表于 2013-8-3 10:48:38 | 只看该作者
其实直接把数据内容写入文件就行了吧。
这个下载因该是直接下载文件数据,保持文件名相同因该就行了。

点评

汗。。果然是非洲人的蛋  发表于 2013-8-3 13:32
↓咱还没搞过网络关联的事情,不太清楚囧  发表于 2013-8-3 10:55
。你也这么说。。但我试了不行不信乃试试  发表于 2013-8-3 10:54
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
747
在线时间
799 小时
注册时间
2011-10-20
帖子
2394

开拓者

17
 楼主| 发表于 2013-8-3 07:49:43 | 只看该作者
本帖最后由 end55rpg 于 2013-8-3 07:52 编辑
亿万星辰 发表于 2013-8-2 23:06
那说了半天Get_Http_Info.get_html是什么内容啊,你还是不说……

用 wb 来写


bitmap = Get_Version_Info.get_version("http://uc.66rpg.com/data/avatar/000/24/98/90_avatar_middle.jpg")
f = File.open("temp.jpg", "wb")
f.write(bitmap)
f.close


= =我试了下运行这个怎么不管用额,下载的temp.jpg还是无法显示。。。你测试能显示?

gethtml如下↓。。

RUBY 代码复制
  1. #==================================================
  2. # 本脚本来自 [url]www.66rpg.com[/url] 使用和转载请保留此信息
  3. #==================================================
  4. class Get_Http_Info
  5.   AGENT = "RGSS PLAYER"
  6.   INTERNET_OPEN_TYPE_PRECONFIG = 0 # IEの設定を仕様
  7.   INTERNET_OPEN_TYPE_DIRECT = 1 # プロキシを使用しない
  8.  
  9.   def Get_Http_Info.InternetOpen()
  10.     io = Win32API.new('wininet', 'InternetOpen', %(p, l, p, p, l), 'l')
  11.     hInternet = io.call(AGENT, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
  12.     return hInternet
  13.   end
  14.  
  15.   def Get_Http_Info.InternetOpenUrl(hSession, url)
  16.     iou = Win32API.new('wininet', 'InternetOpenUrl', %(l, p, p, l, l, l), 'l')
  17.     hService = iou.call(hSession, url, nil, 0, 0, 0)
  18.     return hService
  19.   end
  20.  
  21.   def Get_Http_Info.InternetReadFile(hService,length,bk)
  22.     content = ""
  23.  
  24.     read_size = 1024 # 一次读入文件的尺寸
  25.     irf = Win32API.new('wininet', 'InternetReadFile', %(l, p, i, p), 'i')
  26.     bk.call(0,length)
  27.     id=0
  28.     while(true)
  29.       buf = "\0" * read_size
  30.       red = [0].pack('L')
  31.       irf.call( hService, buf, read_size, red )
  32.       bk.call(id*read_size,length)
  33.       id+=1
  34.       # 读到文件末端
  35.       break if (red.unpack('L') == [0])
  36.       buf.delete!("\0")
  37.       content += buf
  38.     end
  39.     return content
  40.   end
  41.  
  42.   HTTP_QUERY_STATUS_CODE = 19
  43.   CONTENT_LENGTH=5
  44.   def Get_Http_Info.HttpQueryInfo(hService)
  45.     read_size = 1024
  46.     buf = "\0" * read_size
  47.     red = [read_size-1].pack('L')
  48.     hqi = Win32API.new('wininet', 'HttpQueryInfo', %(l, l, p, p, p), 'i')
  49.     isOk = hqi.call( hService, HTTP_QUERY_STATUS_CODE, buf, red, nil)
  50.     buf.delete!("\0")
  51.     return buf
  52.   end
  53.  
  54.   def Get_Http_Info.InternetCloseHandle(hInternet)
  55.     ich = Win32API.new('winInet', 'InternetCloseHandle', %(l), 'i')
  56.     isOk = ich.call(hInternet)
  57.     return isOk
  58.   end
  59.  
  60.   HTTP_CODE_OK = "200"
  61.   def Get_Http_Info.HttpQuerySize(hService)
  62.     read_size = 1024
  63.     buf = "\0" * read_size
  64.     red = [read_size-1].pack('L')
  65.     hqi = Win32API.new('wininet', 'HttpQueryInfo', %(l, l, p, p, p), 'i')
  66.     isOk = hqi.call( hService, CONTENT_LENGTH, buf, red, nil)
  67.     buf.delete!("\0")
  68.     return buf
  69.   end
  70.   def Get_Http_Info.get_info(url)
  71.     info = nil
  72.     begin
  73.       hInternet = InternetOpen()
  74.       if (hInternet != 0)
  75.         hService = InternetOpenUrl(hInternet, url)
  76.         if (hService != 0)
  77.           status_code = HttpQueryInfo(hService)
  78.           if (status_code == HTTP_CODE_OK)
  79.             info = InternetReadFile(hService)
  80.           end
  81.           InternetCloseHandle(hService)
  82.         end
  83.         InternetCloseHandle(hInternet)
  84.       end
  85.     rescue
  86.       # 例外发生
  87.       return nil
  88.     end
  89.     ary = []
  90.     info.each_line do |line|
  91.       next if line.empty?
  92.       ary.push line
  93.     end
  94.     return ary[271].scan(/\w+<\/a>/)
  95.   end
  96.  
  97.   def Get_Http_Info.get_html(url,bk)
  98.     info = nil
  99.    # begin
  100.       hInternet = InternetOpen()
  101.       if (hInternet != 0)
  102.         hService = InternetOpenUrl(hInternet, url)
  103.  
  104.         if (hService != 0)
  105.           status_code = HttpQueryInfo(hService)
  106.           length=HttpQuerySize(hService).to_i
  107.           if (status_code == HTTP_CODE_OK)
  108.             #a=File.open(pathname,"wb")
  109.             info = InternetReadFile(hService,length,bk)
  110.           end
  111.           InternetCloseHandle(hService)
  112.         end
  113.         InternetCloseHandle(hInternet)
  114.       end
  115.     #rescue
  116.       # 例外发生
  117.     #  return nil
  118.     #end
  119.  
  120.     return info
  121.   end
  122.  
  123. end

点评

不给这个我们怎么知道你用的是什么API函数我们怎么帮你囧  发表于 2013-8-3 10:43
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
747
在线时间
799 小时
注册时间
2011-10-20
帖子
2394

开拓者

16
 楼主| 发表于 2013-8-2 23:32:12 手机端发表。 | 只看该作者
亿万星辰 发表于 2013-8-2 23:06
那说了半天Get_Http_Info.get_html是什么内容啊,你还是不说……

用 wb 来写

好吧明天我试试然后html..那个就是几百年前你updateonline的产物啊。。睡咯注意休息。。。。
我记得我是用wb不行才改用w+的,,
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
270
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

15
发表于 2013-8-2 23:06:26 | 只看该作者
本帖最后由 亿万星辰 于 2013-8-2 23:16 编辑

那说了半天Get_Http_Info.get_html是什么内容啊,你还是不说……

用 wb 来写
  1. bitmap = Get_Version_Info.get_version("http://uc.66rpg.com/data/avatar/000/24/98/90_avatar_middle.jpg")
  2. f = File.open("temp.jpg", "wb")
  3. f.write(bitmap)
  4. f.close
复制代码
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-13 22:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表